~ubuntu-branches/ubuntu/wily/openms/wily

« back to all changes in this revision

Viewing changes to doc/html/IsotopeWaveletTransform_8h_source.html

  • Committer: Package Import Robot
  • Author(s): Filippo Rusconi
  • Date: 2013-12-20 11:30:16 UTC
  • mfrom: (5.1.2 sid)
  • Revision ID: package-import@ubuntu.com-20131220113016-wre5g9bteeheq6he
Tags: 1.11.1-3
* remove version number from libbost development package names;
* ensure that AUTHORS is correctly shipped in all packages.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<HTML>
 
2
<HEAD>
 
3
<TITLE>IsotopeWaveletTransform.h Source File</TITLE>
 
4
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
 
5
<LINK HREF="style_ini.css" REL="stylesheet" TYPE="text/css">
 
6
</HEAD>
 
7
<BODY BGCOLOR="#FFFFFF">
 
8
<A href="index.html">Home</A> &nbsp;&middot;
 
9
<A href="classes.html">Classes</A> &nbsp;&middot;
 
10
<A href="annotated.html">Annotated Classes</A> &nbsp;&middot;
 
11
<A href="modules.html">Modules</A> &nbsp;&middot;
 
12
<A href="functions_func.html">Members</A> &nbsp;&middot;
 
13
<A href="namespaces.html">Namespaces</A> &nbsp;&middot;
 
14
<A href="pages.html">Related Pages</A>
 
15
<HR style="height:1px; border:none; border-top:1px solid #c0c0c0;">
 
16
<!-- Generated by Doxygen 1.8.5 -->
 
17
<div id="nav-path" class="navpath">
 
18
  <ul>
 
19
<li class="navelem"><a class="el" href="dir_e770f0cf77e550adde3f44739ef529fe.html">include</a></li><li class="navelem"><a class="el" href="dir_6a63c4937d4da007e55fff5dcf71e0f8.html">OpenMS</a></li><li class="navelem"><a class="el" href="dir_9f700962877a340cb515a8f4e78fa50c.html">TRANSFORMATIONS</a></li><li class="navelem"><a class="el" href="dir_37e9c1b52d0b253b62f883ccdf65930c.html">FEATUREFINDER</a></li>  </ul>
 
20
</div>
 
21
</div><!-- top -->
 
22
<div class="header">
 
23
  <div class="headertitle">
 
24
<div class="title">IsotopeWaveletTransform.h</div>  </div>
 
25
</div><!--header-->
 
26
<div class="contents">
 
27
<a href="IsotopeWaveletTransform_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// --------------------------------------------------------------------------</span></div>
 
28
<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">//                   OpenMS -- Open-Source Mass Spectrometry</span></div>
 
29
<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// --------------------------------------------------------------------------</span></div>
 
30
<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">// Copyright The OpenMS Team -- Eberhard Karls University Tuebingen,</span></div>
 
31
<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">// ETH Zurich, and Freie Universitaet Berlin 2002-2013.</span></div>
 
32
<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">//</span></div>
 
33
<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// This software is released under a three-clause BSD license:</span></div>
 
34
<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">//  * Redistributions of source code must retain the above copyright</span></div>
 
35
<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">//    notice, this list of conditions and the following disclaimer.</span></div>
 
36
<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">//  * Redistributions in binary form must reproduce the above copyright</span></div>
 
37
<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">//    notice, this list of conditions and the following disclaimer in the</span></div>
 
38
<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment">//    documentation and/or other materials provided with the distribution.</span></div>
 
39
<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment">//  * Neither the name of any author or any participating institution</span></div>
 
40
<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment">//    may be used to endorse or promote products derived from this software</span></div>
 
41
<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment">//    without specific prior written permission.</span></div>
 
42
<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment">// For a full list of authors, refer to the file AUTHORS.</span></div>
 
43
<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment">// --------------------------------------------------------------------------</span></div>
 
44
<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
 
45
<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
 
46
<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
 
47
<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL ANY OF THE AUTHORS OR THE CONTRIBUTING</span></div>
 
48
<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment">// INSTITUTIONS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,</span></div>
 
49
<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment">// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,</span></div>
 
50
<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment">// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;</span></div>
 
51
<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment">// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,</span></div>
 
52
<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment">// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR</span></div>
 
53
<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment">// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF</span></div>
 
54
<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment">// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span></div>
 
55
<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment">//</span></div>
 
56
<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">// --------------------------------------------------------------------------</span></div>
 
57
<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">// $Maintainer: Rene Hussong$</span></div>
 
58
<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment">// $Authors: $</span></div>
 
59
<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">// --------------------------------------------------------------------------</span></div>
 
60
<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div>
 
61
<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#ifndef OPENMS_TRANSFORMATIONS_FEATUREFINDER_ISOTOPEWAVELETTRANSFORM_H</span></div>
 
62
<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define OPENMS_TRANSFORMATIONS_FEATUREFINDER_ISOTOPEWAVELETTRANSFORM_H</span></div>
 
63
<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor"></span></div>
 
64
<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="IsotopeWaveletConstants_8h.html">OpenMS/TRANSFORMATIONS/FEATUREFINDER/IsotopeWaveletConstants.h</a>&gt;</span></div>
 
65
<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="IsotopeWavelet_8h.html">OpenMS/TRANSFORMATIONS/FEATUREFINDER/IsotopeWavelet.h</a>&gt;</span></div>
 
66
<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="FeatureMap_8h.html">OpenMS/KERNEL/FeatureMap.h</a>&gt;</span></div>
 
67
<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="MSExperiment_8h.html">OpenMS/KERNEL/MSExperiment.h</a>&gt;</span></div>
 
68
<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="MSSpectrum_8h.html">OpenMS/KERNEL/MSSpectrum.h</a>&gt;</span></div>
 
69
<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="Exception_8h.html">OpenMS/CONCEPT/Exception.h</a>&gt;</span></div>
 
70
<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="LinearRegression_8h.html">OpenMS/MATH/STATISTICS/LinearRegression.h</a>&gt;</span></div>
 
71
<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="ConstRefVector_8h.html">OpenMS/DATASTRUCTURES/ConstRefVector.h</a>&gt;</span></div>
 
72
<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">#include &lt;cmath&gt;</span></div>
 
73
<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#include &lt;math.h&gt;</span></div>
 
74
<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor">#include &lt;boost/math/special_functions/bessel.hpp&gt;</span></div>
 
75
<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
 
76
<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div>
 
77
<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">#include &lt;sstream&gt;</span></div>
 
78
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#include &lt;fstream&gt;</span></div>
 
79
<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">#include &lt;iomanip&gt;</span></div>
 
80
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;</div>
 
81
<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="preprocessor">#ifdef OPENMS_HAS_CUDA</span></div>
 
82
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;cuda.h&gt;</span></div>
 
83
<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="IsotopeWaveletCudaKernel_8h.html">OpenMS/TRANSFORMATIONS/FEATUREFINDER/IsotopeWaveletCudaKernel.h</a>&gt;</span></div>
 
84
<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="preprocessor">#endif</span></div>
 
85
<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="preprocessor"></span></div>
 
86
<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="comment">// we are not yet sure if we really want to drag in cutil.h and the CUDA_SAFE_CALL definitions...</span></div>
 
87
<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="preprocessor">#ifndef CUDA_SAFE_CALL</span></div>
 
88
<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="IsotopeWaveletTransform_8h.html#a0bc2332eff86e645eae632d071929dc5">   62</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define CUDA_SAFE_CALL(call) call;</span></div>
 
89
<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
 
90
<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="preprocessor"></span></div>
 
91
<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="keyword">namespace </span>OpenMS</div>
 
92
<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;{</div>
 
93
<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div>
 
94
<div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classOpenMS_1_1cudaHelp.html">   69</a></span>&#160;  <span class="keyword">class </span><a class="code" href="classOpenMS_1_1cudaHelp.html">cudaHelp</a></div>
 
95
<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;  {</div>
 
96
<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="keyword">public</span>:</div>
 
97
<div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classOpenMS_1_1cudaHelp.html#a6ff4b770948f39e585fb6802491c94ad">   72</a></span>&#160;    <span class="keywordtype">float</span> <a class="code" href="classOpenMS_1_1cudaHelp.html#a6ff4b770948f39e585fb6802491c94ad">getMZ</a>()</div>
 
98
<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;    { <span class="keywordflow">return</span> <a class="code" href="classOpenMS_1_1cudaHelp.html#ad809db94e78d3f3e9868aff5bbbc61b8">mz</a>; }</div>
 
99
<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classOpenMS_1_1cudaHelp.html#a3e3449f1d00552f421d502ce67fd9519">   74</a></span>&#160;    <span class="keywordtype">float</span> <a class="code" href="classOpenMS_1_1cudaHelp.html#a3e3449f1d00552f421d502ce67fd9519">getIntensity</a>()</div>
 
100
<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    { <span class="keywordflow">return</span> <a class="code" href="classOpenMS_1_1cudaHelp.html#a395577a8badec0a6a3cec15c1f2a39f0">intens</a>; }</div>
 
101
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;</div>
 
102
<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classOpenMS_1_1cudaHelp.html#ad809db94e78d3f3e9868aff5bbbc61b8">   77</a></span>&#160;    <span class="keywordtype">float</span> <a class="code" href="classOpenMS_1_1cudaHelp.html#ad809db94e78d3f3e9868aff5bbbc61b8">mz</a>;</div>
 
103
<div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classOpenMS_1_1cudaHelp.html#a395577a8badec0a6a3cec15c1f2a39f0">   78</a></span>&#160;    <span class="keywordtype">float</span> <a class="code" href="classOpenMS_1_1cudaHelp.html#a395577a8badec0a6a3cec15c1f2a39f0">intens</a>;</div>
 
104
<div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classOpenMS_1_1cudaHelp.html#a8c5cd9b525ee73a24b1d9d8e34982d1c">   79</a></span>&#160;    <span class="keywordtype">float</span> <a class="code" href="classOpenMS_1_1cudaHelp.html#a8c5cd9b525ee73a24b1d9d8e34982d1c">score</a>;</div>
 
105
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  };</div>
 
106
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;</div>
 
107
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div>
 
108
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
109
<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html">   87</a></span>&#160;  <span class="keyword">class </span><a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html">IsotopeWaveletTransform</a></div>
 
110
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  {</div>
 
111
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;<span class="keyword">public</span>:</div>
 
112
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;</div>
 
113
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;</div>
 
114
<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html">   93</a></span>&#160;    <span class="keyword">struct </span><a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html">BoxElement</a></div>
 
115
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;    {</div>
 
116
<div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#ae7800b5f37aa029e53c6776f1952cdc7">   95</a></span>&#160;      <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#ae7800b5f37aa029e53c6776f1952cdc7">mz</a>; <span class="comment">//&lt;The monoisotopic position</span></div>
 
117
<div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#a6d47e4bb5a579f9dd390c2a4f07a3cd3">   96</a></span>&#160;      <a class="code" href="classunsigned_01int.html">UInt</a> <a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#a6d47e4bb5a579f9dd390c2a4f07a3cd3">c</a>; <span class="comment">//&lt;Note, this is not the charge (it is charge-1!!!)</span></div>
 
118
<div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#aa2ac7da25c2023e7cf03863e5b907fd9">   97</a></span>&#160;      <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#aa2ac7da25c2023e7cf03863e5b907fd9">score</a>; <span class="comment">//&lt;The associated score</span></div>
 
119
<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#a991a665a859b92931ef2ddccea7d98c5">   98</a></span>&#160;      <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#a991a665a859b92931ef2ddccea7d98c5">intens</a>; <span class="comment">//&lt;The transformed intensity at the monoisotopic mass</span></div>
 
120
<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#a62e26b2bd8e4c4038f96c14cae131978">   99</a></span>&#160;      <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#a62e26b2bd8e4c4038f96c14cae131978">ref_intens</a>;</div>
 
121
<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#afc4478a0397a76fef003746ff45fc201">  100</a></span>&#160;      <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#afc4478a0397a76fef003746ff45fc201">RT</a>; <span class="comment">//&lt;The elution time (not the scan index)</span></div>
 
122
<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#aba2639fbb6538864cefddd4d6c8ef417">  101</a></span>&#160;      <a class="code" href="classunsigned_01int.html">UInt</a> <a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#aba2639fbb6538864cefddd4d6c8ef417">RT_index</a>; <span class="comment">//&lt;The elution time (map) index</span></div>
 
123
<div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#a56fc2ba583e2d06588d25e53007aa0ea">  102</a></span>&#160;      <a class="code" href="classunsigned_01int.html">UInt</a> <a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#a56fc2ba583e2d06588d25e53007aa0ea">MZ_begin</a>; <span class="comment">//&lt;Index</span></div>
 
124
<div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#ad5ef9efd3868aea52362ff6823edf99a">  103</a></span>&#160;      <a class="code" href="classunsigned_01int.html">UInt</a> <a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#ad5ef9efd3868aea52362ff6823edf99a">MZ_end</a>; <span class="comment">//&lt;Index</span></div>
 
125
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    };</div>
 
126
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div>
 
127
<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#af8b1d83064f6ef81d7a617802bab249f">  106</a></span>&#160;    <span class="keyword">typedef</span> std::multimap&lt;UInt, BoxElement&gt; <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#af8b1d83064f6ef81d7a617802bab249f">Box</a>; </div>
 
128
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div>
 
129
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;</div>
 
130
<div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html">  112</a></span>&#160;    <span class="keyword">class </span><a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html">TransSpectrum</a></div>
 
131
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    {</div>
 
132
<div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a09798aaa413bf03f8b37a2b06ba015f8">  114</a></span>&#160;      <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html">IsotopeWaveletTransform</a>;</div>
 
133
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;</div>
 
134
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;<span class="keyword">public</span>:</div>
 
135
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div>
 
136
<div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a4d69c4dc58992f495ee2617739947afd">  119</a></span>&#160;      <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a4d69c4dc58992f495ee2617739947afd">TransSpectrum</a>() :</div>
 
137
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;        <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#af0266aa100043c3b03d6b1fce8f567a3">reference_</a>(<a class="code" href="IsotopeWaveletParallelFor_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>), <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a92fc56a385acc7bea877d086a655fdf0">trans_intens_</a>(<a class="code" href="IsotopeWaveletParallelFor_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>)</div>
 
138
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;      {</div>
 
139
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;      }</div>
 
140
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</div>
 
141
<div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a59d6ba42b6d033cc57667a4e7db9f283">  125</a></span>&#160;      <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a59d6ba42b6d033cc57667a4e7db9f283">TransSpectrum</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>* reference) :</div>
 
142
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;        <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#af0266aa100043c3b03d6b1fce8f567a3">reference_</a>(reference)</div>
 
143
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;      {</div>
 
144
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;        <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a92fc56a385acc7bea877d086a655fdf0">trans_intens_</a> = <span class="keyword">new</span> std::vector&lt;float&gt;(<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#af0266aa100043c3b03d6b1fce8f567a3">reference_</a>-&gt;size(), 0.0);</div>
 
145
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;      }</div>
 
146
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;</div>
 
147
<div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a77c0563d5ff6ae3dba2eee2cbc4b19c1">  132</a></span>&#160;      <span class="keyword">virtual</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a77c0563d5ff6ae3dba2eee2cbc4b19c1">~TransSpectrum</a>()</div>
 
148
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;      {</div>
 
149
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;        <span class="keyword">delete</span> (<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a92fc56a385acc7bea877d086a655fdf0">trans_intens_</a>);</div>
 
150
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;      }</div>
 
151
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;</div>
 
152
<div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#aed2d208f4d304cc6def0a15b73f115bf">  137</a></span>&#160;      <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#aed2d208f4d304cc6def0a15b73f115bf">destroy</a>()</div>
 
153
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;      {</div>
 
154
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;        <span class="keyword">delete</span> (<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a92fc56a385acc7bea877d086a655fdf0">trans_intens_</a>);</div>
 
155
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;        <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a92fc56a385acc7bea877d086a655fdf0">trans_intens_</a> = <a class="code" href="IsotopeWaveletParallelFor_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;</div>
 
156
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;        <span class="keyword">delete</span> (<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#af0266aa100043c3b03d6b1fce8f567a3">reference_</a>);</div>
 
157
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;        <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#af0266aa100043c3b03d6b1fce8f567a3">reference_</a> = <a class="code" href="IsotopeWaveletParallelFor_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;</div>
 
158
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;      }</div>
 
159
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;</div>
 
160
<div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a3da529bd3240fa0d7148484bbef0b9d7">  146</a></span>&#160;      <span class="keyword">inline</span> <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a3da529bd3240fa0d7148484bbef0b9d7">getRT</a>()<span class="keyword"> const</span></div>
 
161
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;<span class="keyword">      </span>{</div>
 
162
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#af0266aa100043c3b03d6b1fce8f567a3">reference_</a>-&gt;<a class="code" href="classOpenMS_1_1MSSpectrum.html#a3da529bd3240fa0d7148484bbef0b9d7">getRT</a>();</div>
 
163
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;      }</div>
 
164
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;</div>
 
165
<div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a9c10530886aa26b8dc86fd13846907e1">  152</a></span>&#160;      <span class="keyword">inline</span> <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a9c10530886aa26b8dc86fd13846907e1">getMZ</a>(<span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> i)<span class="keyword"> const</span></div>
 
166
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;<span class="keyword">      </span>{</div>
 
167
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;        <span class="keywordflow">return</span> (*<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#af0266aa100043c3b03d6b1fce8f567a3">reference_</a>)[i].getMZ();</div>
 
168
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;      }</div>
 
169
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;</div>
 
170
<div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a5891967609c1abd65616dcd4456e41da">  158</a></span>&#160;      <span class="keyword">inline</span> <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a5891967609c1abd65616dcd4456e41da">getRefIntensity</a>(<span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> i)<span class="keyword"> const</span></div>
 
171
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;<span class="keyword">      </span>{</div>
 
172
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;        <span class="keywordflow">return</span> (*<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#af0266aa100043c3b03d6b1fce8f567a3">reference_</a>)[i].getIntensity();</div>
 
173
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;      }</div>
 
174
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;</div>
 
175
<div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a420f9a11eb02b46c5bb50b13b857ca95">  164</a></span>&#160;      <span class="keyword">inline</span> <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a420f9a11eb02b46c5bb50b13b857ca95">getTransIntensity</a>(<span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> i)<span class="keyword"> const</span></div>
 
176
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;<span class="keyword">      </span>{</div>
 
177
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;        <span class="keywordflow">return</span> (*<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a92fc56a385acc7bea877d086a655fdf0">trans_intens_</a>)[i];</div>
 
178
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;      }</div>
 
179
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div>
 
180
<div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a388d3f21c5c30e6d755c384aa5351e58">  170</a></span>&#160;      <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a388d3f21c5c30e6d755c384aa5351e58">setTransIntensity</a>(<span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> i, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> intens)</div>
 
181
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;      {</div>
 
182
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;        (*trans_intens_)[i] = intens;</div>
 
183
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;      }</div>
 
184
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;</div>
 
185
<div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a9d78a687cf2a391198bb3cbc08bc06cb">  176</a></span>&#160;      <span class="keyword">inline</span> <a class="code" href="group__Concept.html#gaf9ecec2d692138fab9167164a457cbd4">Size</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a9d78a687cf2a391198bb3cbc08bc06cb">size</a>()<span class="keyword"> const</span></div>
 
186
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;<span class="keyword">      </span>{</div>
 
187
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a92fc56a385acc7bea877d086a655fdf0">trans_intens_</a>-&gt;size();</div>
 
188
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;      }</div>
 
189
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;</div>
 
190
<div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#aaec90893f90185e17d285be87ace7897">  182</a></span>&#160;      <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>* <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#aaec90893f90185e17d285be87ace7897">getRefSpectrum</a>()</div>
 
191
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;      {</div>
 
192
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#af0266aa100043c3b03d6b1fce8f567a3">reference_</a>;</div>
 
193
<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;      }</div>
 
194
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;</div>
 
195
<div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a0b49c03b6407c082e4a26ede3126783b">  188</a></span>&#160;      <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>* <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a0b49c03b6407c082e4a26ede3126783b">getRefSpectrum</a>()<span class="keyword"> const</span></div>
 
196
<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;<span class="keyword">      </span>{</div>
 
197
<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#af0266aa100043c3b03d6b1fce8f567a3">reference_</a>;</div>
 
198
<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;      }</div>
 
199
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;</div>
 
200
<div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a2cf06f0f5a8cbfc86220b92424d4552b">  195</a></span>&#160;      <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;::const_iterator</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a2cf06f0f5a8cbfc86220b92424d4552b">MZBegin</a>(<span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> mz)<span class="keyword"> const</span></div>
 
201
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;<span class="keyword">      </span>{</div>
 
202
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#af0266aa100043c3b03d6b1fce8f567a3">reference_</a>-&gt;<a class="code" href="classOpenMS_1_1MSSpectrum.html#a808327302a2ba3fb630ea132d32db942">MZBegin</a>(mz);</div>
 
203
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;      }</div>
 
204
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;</div>
 
205
<div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a059641a0cc2fa2773b63d48ac92a5edd">  202</a></span>&#160;      <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;::const_iterator</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a059641a0cc2fa2773b63d48ac92a5edd">MZEnd</a>(<span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> mz)<span class="keyword"> const</span></div>
 
206
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;<span class="keyword">      </span>{</div>
 
207
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#af0266aa100043c3b03d6b1fce8f567a3">reference_</a>-&gt;<a class="code" href="classOpenMS_1_1MSSpectrum.html#add06770712321b6e489bbdbcd123c888">MZEnd</a>(mz);</div>
 
208
<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;      }</div>
 
209
<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;</div>
 
210
<div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#ac01116b96e6716e6ba815e6098478a1b">  209</a></span>&#160;      <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;::const_iterator</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#ac01116b96e6716e6ba815e6098478a1b">end</a>()<span class="keyword"> const</span></div>
 
211
<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;<span class="keyword">      </span>{</div>
 
212
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#af0266aa100043c3b03d6b1fce8f567a3">reference_</a>-&gt;end();</div>
 
213
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;      }</div>
 
214
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;</div>
 
215
<div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#aef6a8bdc8ceaf79040c262392dae689d">  216</a></span>&#160;      <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;::const_iterator</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#aef6a8bdc8ceaf79040c262392dae689d">begin</a>()<span class="keyword"> const</span></div>
 
216
<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;<span class="keyword">      </span>{</div>
 
217
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#af0266aa100043c3b03d6b1fce8f567a3">reference_</a>-&gt;begin();</div>
 
218
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;      }</div>
 
219
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;</div>
 
220
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;<span class="keyword">protected</span>:</div>
 
221
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;</div>
 
222
<div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#af0266aa100043c3b03d6b1fce8f567a3">  223</a></span>&#160;      <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>* <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#af0266aa100043c3b03d6b1fce8f567a3">reference_</a>; <span class="comment">//&lt;The reference spectrum</span></div>
 
223
<div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a92fc56a385acc7bea877d086a655fdf0">  224</a></span>&#160;      std::vector&lt;float&gt;* <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a92fc56a385acc7bea877d086a655fdf0">trans_intens_</a>; <span class="comment">//&lt;The intensities of the transform</span></div>
 
224
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;</div>
 
225
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    };</div>
 
226
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;</div>
 
227
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;</div>
 
228
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;</div>
 
229
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;    <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a40a60540d9f10eb87e4066eff10b1086">IsotopeWaveletTransform</a>(<span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> min_mz, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> max_mz, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> max_charge, <span class="keyword">const</span> <a class="code" href="group__Concept.html#gaf9ecec2d692138fab9167164a457cbd4">Size</a> max_scan_size = 0, <span class="keyword">const</span> <span class="keywordtype">bool</span> use_cuda = <span class="keyword">false</span>, <span class="keyword">const</span> <span class="keywordtype">bool</span> hr_data = <span class="keyword">false</span>, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1String.html">String</a> intenstype = <span class="stringliteral">&quot;ref&quot;</span>);</div>
 
230
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;</div>
 
231
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;    <span class="keyword">virtual</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a0c0243adc4a1eb30bf62144a88181131">~IsotopeWaveletTransform</a>();</div>
 
232
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;</div>
 
233
<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;</div>
 
234
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a54c204f5b2d6a44874df21661e992224">getTransform</a>(<a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; c_trans, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; c_ref, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>);</div>
 
235
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;</div>
 
236
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#ad9ced5a5293256ab54096986d28d693f">getTransformHighRes</a>(<a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; c_trans, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; c_ref, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>);</div>
 
237
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;</div>
 
238
<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#ad7b38b52b1b16ca069e80ff8b8618295">identifyCharge</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; candidates, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; ref, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> scan_index, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>,</div>
 
239
<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;                                <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> ampl_cutoff, <span class="keyword">const</span> <span class="keywordtype">bool</span> check_PPMs);</div>
 
240
<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;</div>
 
241
<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#ab99b362c90b6915c337cc919b73b599f">initializeScan</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; c_ref, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a> = 0);</div>
 
242
<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;</div>
 
243
<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;<span class="preprocessor">#ifdef OPENMS_HAS_CUDA</span></div>
 
244
<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;<span class="preprocessor"></span></div>
 
245
<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">int</span> initializeScanCuda(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; scan, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a> = 0);</div>
 
246
<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;</div>
 
247
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> finalizeScanCuda();</div>
 
248
<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;</div>
 
249
<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> getTransformCuda(<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html">TransSpectrum</a>&amp; c_trans, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>);</div>
 
250
<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;</div>
 
251
<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> identifyChargeCuda(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html">TransSpectrum</a>&amp; candidates, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> scan_index, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>,</div>
 
252
<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;                                    <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> ampl_cutoff, <span class="keyword">const</span> <span class="keywordtype">bool</span> check_PPMs);</div>
 
253
<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;</div>
 
254
<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">int</span> sortCuda(<a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; sorted);</div>
 
255
<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;<span class="preprocessor">#endif</span></div>
 
256
<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;<span class="preprocessor"></span></div>
 
257
<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;</div>
 
258
<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#ac0b48539bdee44dbe1368bcfd412f33f">updateBoxStates</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSExperiment.html">MSExperiment&lt;PeakType&gt;</a>&amp; map, <span class="keyword">const</span> <a class="code" href="group__Concept.html#gaf9ecec2d692138fab9167164a457cbd4">Size</a> scan_index, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> RT_interleave,</div>
 
259
<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;                         <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> RT_votes_cutoff, <span class="keyword">const</span> <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> front_bound = -1, <span class="keyword">const</span> <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> end_bound = -1);</div>
 
260
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;</div>
 
261
<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;</div>
 
262
<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#ade38c945f9f72617b16d2ffeb72a27cd">mergeFeatures</a>(<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html">IsotopeWaveletTransform&lt;PeakType&gt;</a>* later_iwt, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> RT_interleave, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> RT_votes_cutoff);</div>
 
263
<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;</div>
 
264
<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;</div>
 
265
<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;    <a class="code" href="classOpenMS_1_1FeatureMap.html">FeatureMap&lt;Feature&gt;</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a12db861a7fd5db1a8aea9e6c4a403a89">mapSeeds2Features</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSExperiment.html">MSExperiment&lt;PeakType&gt;</a>&amp; map, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> RT_votes_cutoff);</div>
 
266
<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;</div>
 
267
<div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a5ea2297f4d01f303b140d3dd574022b9">  334</a></span>&#160;    <span class="keyword">virtual</span> std::multimap&lt;DoubleReal, Box&gt; <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a5ea2297f4d01f303b140d3dd574022b9">getClosedBoxes</a>()</div>
 
268
<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;    { <span class="keywordflow">return</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a7c937464c726b102d04846c420349f3a">closed_boxes_</a>;  }</div>
 
269
<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;</div>
 
270
<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;</div>
 
271
<div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a443723a386a52b8b178a1267c368045b">  342</a></span>&#160;    <span class="keyword">inline</span> <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a443723a386a52b8b178a1267c368045b">getLinearInterpolation</a>(<span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;::const_iterator</a>&amp; left_iter, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> mz_pos, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;::const_iterator</a>&amp; right_iter)</div>
 
272
<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;    {</div>
 
273
<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;      <span class="keywordflow">return</span> left_iter-&gt;getIntensity() + (right_iter-&gt;getIntensity() - left_iter-&gt;getIntensity()) / (right_iter-&gt;getMZ() - left_iter-&gt;getMZ()) * (mz_pos - left_iter-&gt;getMZ());</div>
 
274
<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;    }</div>
 
275
<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;</div>
 
276
<div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a2b50707910bf9a7c8d94a2bf81aedeb8">  353</a></span>&#160;    <span class="keyword">inline</span> <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a2b50707910bf9a7c8d94a2bf81aedeb8">getLinearInterpolation</a>(<span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> mz_a, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> intens_a, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> mz_pos, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> mz_b, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> intens_b)</div>
 
277
<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;    {</div>
 
278
<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;      <span class="keywordflow">return</span> intens_a + (intens_b - intens_a) / (mz_b - mz_a) * (mz_pos - mz_a);</div>
 
279
<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;    }</div>
 
280
<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;</div>
 
281
<div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a304e5ec82254e764fd4b290c546dd8f6">  358</a></span>&#160;    <span class="keyword">inline</span> <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a304e5ec82254e764fd4b290c546dd8f6">getSigma</a>()<span class="keyword"> const</span></div>
 
282
<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;<span class="keyword">    </span>{</div>
 
283
<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#af1308a42f8f600930f567b3977465fe1">sigma_</a>;</div>
 
284
<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;    }</div>
 
285
<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;</div>
 
286
<div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a718a711938d51f08a2c0aec9a5e8ad63">  363</a></span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a718a711938d51f08a2c0aec9a5e8ad63">setSigma</a>(<span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> sigma)</div>
 
287
<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;    {</div>
 
288
<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;      <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#af1308a42f8f600930f567b3977465fe1">sigma_</a> = sigma;</div>
 
289
<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;    }</div>
 
290
<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;</div>
 
291
<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#acdf960f3bc80fd3c9751bd698ca96be8">computeMinSpacing</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; c_ref);</div>
 
292
<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;</div>
 
293
<div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a40ec98ac5a32af68f48e6a07e1210a37">  370</a></span>&#160;    <span class="keyword">inline</span> <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a40ec98ac5a32af68f48e6a07e1210a37">getMinSpacing</a>()<span class="keyword"> const</span></div>
 
294
<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;<span class="keyword">    </span>{</div>
 
295
<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#abe874e329cc053e8fcd02c01ee2cbea8">min_spacing_</a>;</div>
 
296
<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;    }</div>
 
297
<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;</div>
 
298
<div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a21e1b5c7c81ebb8c8ab0f0c98b7d8fec">  375</a></span>&#160;    <span class="keyword">inline</span> <a class="code" href="group__Concept.html#gaf9ecec2d692138fab9167164a457cbd4">Size</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a21e1b5c7c81ebb8c8ab0f0c98b7d8fec">getMaxScanSize</a>()<span class="keyword"> const</span></div>
 
299
<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;<span class="keyword">    </span>{</div>
 
300
<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a11377485c8bf0bfc427b38d5733fd571">max_scan_size_</a>;</div>
 
301
<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;    }</div>
 
302
<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;</div>
 
303
<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;<span class="keyword">protected</span>:</div>
 
304
<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;</div>
 
305
<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;</div>
 
306
<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;    <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a40a60540d9f10eb87e4066eff10b1086">IsotopeWaveletTransform</a>();</div>
 
307
<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;</div>
 
308
<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;</div>
 
309
<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a09fb7c2c3438f28ddfb34466069947eb">sampleTheCMarrWavelet_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; scan, <span class="keyword">const</span> <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> wavelet_length, <span class="keyword">const</span> <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> mz_index, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> charge);</div>
 
310
<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;</div>
 
311
<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;</div>
 
312
<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;    <span class="keyword">virtual</span> <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a93b2fba796a1b0b3364ee6ce60001843">scoreThis_</a>(<span class="keyword">const</span> TransSpectrum&amp; candidate, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> peak_cutoff,</div>
 
313
<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;                                  <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> seed_mz, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> ampl_cutoff);</div>
 
314
<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;</div>
 
315
<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;    <span class="keyword">virtual</span> <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a93b2fba796a1b0b3364ee6ce60001843">scoreThis_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; candidate, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> peak_cutoff,</div>
 
316
<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;                                  <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> seed_mz, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> ampl_cutoff);</div>
 
317
<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;</div>
 
318
<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;</div>
 
319
<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a0cddf185d4cd401acef976e6798ab7c0">checkPositionForPlausibility_</a>(<span class="keyword">const</span> TransSpectrum&amp; candidate, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; ref, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> seed_mz,</div>
 
320
<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;                                               <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> scan_index, <span class="keyword">const</span> <span class="keywordtype">bool</span> check_PPMs, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> transintens, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> prev_score);</div>
 
321
<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;</div>
 
322
<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a0cddf185d4cd401acef976e6798ab7c0">checkPositionForPlausibility_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; candidate, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; ref, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> seed_mz,</div>
 
323
<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;                                               <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> scan_index, <span class="keyword">const</span> <span class="keywordtype">bool</span> check_PPMs, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> transintens, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> prev_score);</div>
 
324
<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;</div>
 
325
<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;    <span class="keyword">virtual</span> std::pair&lt;DoubleReal, DoubleReal&gt; <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a750c0f353f03bb3361b276497b2c216b">checkPPMTheoModel_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; ref, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> c_mz, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>);</div>
 
326
<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;</div>
 
327
<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;</div>
 
328
<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;    <span class="keyword">inline</span> <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a14e9251e18d91334c130cace0ce242b2">getAvIntens_</a>(<span class="keyword">const</span> TransSpectrum&amp; scan);</div>
 
329
<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;    <span class="keyword">inline</span> <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a14e9251e18d91334c130cace0ce242b2">getAvIntens_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; scan);</div>
 
330
<div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;</div>
 
331
<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;    <span class="keyword">inline</span> <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a6ffadd9173c3cabd40cae7de8c119c69">getSdIntens_</a>(<span class="keyword">const</span> TransSpectrum&amp; scan, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="group__MathFunctionsStatistics.html#ga3b4f6f94ad2e4cc1c10753b5f84679c2">mean</a>);</div>
 
332
<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;    <span class="keyword">inline</span> <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a6ffadd9173c3cabd40cae7de8c119c69">getSdIntens_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; scan, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="group__MathFunctionsStatistics.html#ga3b4f6f94ad2e4cc1c10753b5f84679c2">mean</a>);</div>
 
333
<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;</div>
 
334
<div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#abe3442014d1b490291efebca5d69bf6d">push2Box_</a>(<span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> mz, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> scan, <a class="code" href="classunsigned_01int.html">UInt</a> <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> score,</div>
 
335
<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;                           <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> intens, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> rt, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> MZ_begin, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> MZ_end, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> ref_intens);</div>
 
336
<div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;</div>
 
337
<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a6780beba67ab81def140c83860050719">push2TmpBox_</a>(<span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> mz, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> scan, <a class="code" href="classunsigned_01int.html">UInt</a> charge, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> score,</div>
 
338
<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;                              <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> intens, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> rt, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> MZ_begin, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> MZ_end);</div>
 
339
<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;</div>
 
340
<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;    <span class="keyword">inline</span> <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a293f7531cb47810311806f4aca65628f">getAvMZSpacing_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; scan);</div>
 
341
<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;</div>
 
342
<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;</div>
 
343
<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#aa6e604058ed988f0f108f1d7d446cd56">clusterSeeds_</a>(<span class="keyword">const</span> TransSpectrum&amp; candidates, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; ref,</div>
 
344
<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;                       <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> scan_index, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>, <span class="keyword">const</span> <span class="keywordtype">bool</span> check_PPMs);</div>
 
345
<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;</div>
 
346
<div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#aa6e604058ed988f0f108f1d7d446cd56">clusterSeeds_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; candidates, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; ref,</div>
 
347
<div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;                               <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> scan_index, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>, <span class="keyword">const</span> <span class="keywordtype">bool</span> check_PPMs);</div>
 
348
<div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;</div>
 
349
<div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;</div>
 
350
<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a6eb1919d7fb83824c39dff16d3fca8f7">extendBox_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSExperiment.html">MSExperiment&lt;PeakType&gt;</a>&amp; map, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#af8b1d83064f6ef81d7a617802bab249f">Box</a> box);</div>
 
351
<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;</div>
 
352
<div class="line"><a name="l00505"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a92b5ba1d3bbd4724fae3ce6c61c462e0">  505</a></span>&#160;    <span class="keyword">inline</span> <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a92b5ba1d3bbd4724fae3ce6c61c462e0">peptideMassRule_</a>(<span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> c_mass)<span class="keyword"> const</span></div>
 
353
<div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;<span class="keyword">    </span>{</div>
 
354
<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;      <a class="code" href="classdouble.html">DoubleReal</a> correction_fac = c_mass / <a class="code" href="namespaceOpenMS_1_1Constants.html#aad9d587de62ab9ad28e0054384e6e126">Constants::PEPTIDE_MASS_RULE_BOUND</a>;</div>
 
355
<div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;      <a class="code" href="classdouble.html">DoubleReal</a> old_frac_mass = c_mass - (<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a>)(c_mass);</div>
 
356
<div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;      <a class="code" href="classdouble.html">DoubleReal</a> new_mass = ((<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a>)(c_mass)) * (1. + <a class="code" href="namespaceOpenMS_1_1Constants.html#a1cf96746f1f521e1b53ab8947574e1ca">Constants::PEPTIDE_MASS_RULE_FACTOR</a>) - (<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a>)(correction_fac);</div>
 
357
<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;      <a class="code" href="classdouble.html">DoubleReal</a> new_frac_mass = new_mass - (<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a>)(new_mass);</div>
 
358
<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;</div>
 
359
<div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;      <span class="keywordflow">if</span> (new_frac_mass - old_frac_mass &gt; 0.5)</div>
 
360
<div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;      {</div>
 
361
<div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;        new_mass -= 1.;</div>
 
362
<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;      }</div>
 
363
<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;</div>
 
364
<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;      <span class="keywordflow">if</span> (new_frac_mass - old_frac_mass &lt; -0.5)</div>
 
365
<div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;      {</div>
 
366
<div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;        new_mass += 1.;</div>
 
367
<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;      }</div>
 
368
<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;</div>
 
369
<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;      <span class="keywordflow">return</span> new_mass;</div>
 
370
<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;    }</div>
 
371
<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;</div>
 
372
<div class="line"><a name="l00528"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a7d6c0687da2e98bd202a1b7ada3ca8a4">  528</a></span>&#160;    <span class="keyword">inline</span> <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a7d6c0687da2e98bd202a1b7ada3ca8a4">getPPMs_</a>(<span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> mass_a, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> mass_b)<span class="keyword"> const</span></div>
 
373
<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;<span class="keyword">    </span>{</div>
 
374
<div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;      <span class="keywordflow">return</span> fabs(mass_a - mass_b) / (0.5 * (mass_a + mass_b)) * 1e6;</div>
 
375
<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;    }</div>
 
376
<div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;</div>
 
377
<div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;    <span class="comment">//internally used data structures for the sweep line algorithm</span></div>
 
378
<div class="line"><a name="l00534"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#ada0e00b24bc19d43fa1c647880d60e66">  534</a></span>&#160;    std::multimap&lt;DoubleReal, Box&gt; <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#ada0e00b24bc19d43fa1c647880d60e66">open_boxes_</a>, <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a7c937464c726b102d04846c420349f3a">closed_boxes_</a>, <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a3a3ea964b68706f89220c6e1f57ea944">end_boxes_</a>, <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a56b814a538afc8e7c9f5ebc74b658208">front_boxes_</a>; <span class="comment">//DoubleReal = average m/z position</span></div>
 
379
<div class="line"><a name="l00535"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a94d3b9a99282c26ecdc056eeaa26fea8">  535</a></span>&#160;    std::vector&lt;std::multimap&lt;DoubleReal, Box&gt; &gt;* <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a94d3b9a99282c26ecdc056eeaa26fea8">tmp_boxes_</a>; <span class="comment">//for each charge we need a separate container</span></div>
 
380
<div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;</div>
 
381
<div class="line"><a name="l00537"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#af1308a42f8f600930f567b3977465fe1">  537</a></span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a2114c27baa5da2ed87a4a246ded068f2">av_MZ_spacing_</a>, <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#af1308a42f8f600930f567b3977465fe1">sigma_</a>;</div>
 
382
<div class="line"><a name="l00538"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a3f74bfefcca18d06a467b1bfca206d96">  538</a></span>&#160;    std::vector&lt;DoubleReal&gt; <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a8fbb2b54844069add79c0e49efb263e5">c_mzs_</a>, <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#aaeef6f2fe43977f71b0d4ec27b4d6b02">c_spacings_</a>, <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a9857b8679db519b2cc7672e4a719ee5f">psi_</a>, <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a351c3421c18beee6793b76530d89c4be">prod_</a>, <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a3f74bfefcca18d06a467b1bfca206d96">xs_</a>;</div>
 
383
<div class="line"><a name="l00539"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#ab8fd5a80ee9a941706f62c00924e9f47">  539</a></span>&#160;    std::vector&lt;DoubleReal&gt; <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a36cb8cfcf6198ce6c5a22bab62271248">interpol_xs_</a>, <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#ab8fd5a80ee9a941706f62c00924e9f47">interpol_ys_</a>;</div>
 
384
<div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;</div>
 
385
<div class="line"><a name="l00541"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a11377485c8bf0bfc427b38d5733fd571">  541</a></span>&#160;    <a class="code" href="group__Concept.html#gaf9ecec2d692138fab9167164a457cbd4">Size</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a11377485c8bf0bfc427b38d5733fd571">max_scan_size_</a>;</div>
 
386
<div class="line"><a name="l00542"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#ae6ec89cd7c5c47a0fe5b6e15514aa2f2">  542</a></span>&#160;    <a class="code" href="classunsigned_01int.html">UInt</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#ae6ec89cd7c5c47a0fe5b6e15514aa2f2">max_num_peaks_per_pattern_</a>, <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a32280019a7d0e19a07e0c3fd44aee972">max_charge_</a>, <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a221a9199e74c6f7397c24fb43cf260f2">data_length_</a>;</div>
 
387
<div class="line"><a name="l00543"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#af082d2d0e78145cb7e949f3e6a4d92a7">  543</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#af082d2d0e78145cb7e949f3e6a4d92a7">hr_data_</a>;</div>
 
388
<div class="line"><a name="l00544"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a88c83a8cd3e02fed56c28e621d2837ae">  544</a></span>&#160;    <a class="code" href="classOpenMS_1_1String.html">String</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a88c83a8cd3e02fed56c28e621d2837ae">intenstype_</a>;</div>
 
389
<div class="line"><a name="l00545"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a3247a65137026dc8982e3fe617a5d95c">  545</a></span>&#160;    <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a7c0382b30dd06c091e7f298107fc8251">from_max_to_left_</a>, <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a3247a65137026dc8982e3fe617a5d95c">from_max_to_right_</a>;</div>
 
390
<div class="line"><a name="l00546"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a547a68a59a0168eea6b811de936b6dd9">  546</a></span>&#160;    std::vector&lt;int&gt; <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a547a68a59a0168eea6b811de936b6dd9">indices_</a>;</div>
 
391
<div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;</div>
 
392
<div class="line"><a name="l00548"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#ae39a2fcf405a541f81ffffdc36218831">  548</a></span>&#160;    <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#ae39a2fcf405a541f81ffffdc36218831">c_sorted_candidate_</a>;</div>
 
393
<div class="line"><a name="l00549"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#abe874e329cc053e8fcd02c01ee2cbea8">  549</a></span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#abe874e329cc053e8fcd02c01ee2cbea8">min_spacing_</a>, <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a379c3eee5e9810db05f99c6f27523149">max_mz_cutoff_</a>;</div>
 
394
<div class="line"><a name="l00550"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a1ac4492df44e513e2dd8b88d901cfe0e">  550</a></span>&#160;    std::vector&lt;float&gt; <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a4beeaaa11d03a3c50eba42a81be430d8">scores_</a>, <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a1ac4492df44e513e2dd8b88d901cfe0e">zeros_</a>;</div>
 
395
<div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;</div>
 
396
<div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;<span class="preprocessor">#ifdef OPENMS_HAS_CUDA</span></div>
 
397
<div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;<span class="preprocessor"></span>    <span class="keywordtype">float</span>* h_data_;</div>
 
398
<div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;    <span class="keywordtype">int</span>* h_pos_;</div>
 
399
<div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;    <a class="code" href="classunsigned_01int.html">UInt</a> largest_array_size_, overall_size_, block_size_, to_load_, to_compute_;</div>
 
400
<div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;    <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> num_elements_;</div>
 
401
<div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;    <span class="keywordtype">void</span>* cuda_device_intens_;</div>
 
402
<div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;    <span class="keywordtype">void</span>* cuda_device_pos_;</div>
 
403
<div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;    <span class="keywordtype">void</span>* cuda_device_trans_intens_;</div>
 
404
<div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;    <span class="keywordtype">void</span>* cuda_device_fwd2_;</div>
 
405
<div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;    <span class="keywordtype">void</span>* cuda_device_posindices_sorted_;</div>
 
406
<div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;    <span class="keywordtype">void</span>* cuda_device_trans_intens_sorted_;</div>
 
407
<div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;    <span class="keywordtype">void</span>* cuda_device_scores_;</div>
 
408
<div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;    std::vector&lt;float&gt; cuda_positions_, cuda_intensities_;</div>
 
409
<div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;    dim3 dimGrid_, dimBlock_;</div>
 
410
<div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;<span class="preprocessor">#endif</span></div>
 
411
<div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;<span class="preprocessor"></span>  };</div>
 
412
<div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;</div>
 
413
<div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;</div>
 
414
<div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="namespaceOpenMS.html#aa07b2b496e649f9a8e0e3881088f05ca">myCudaComparator</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1cudaHelp.html">cudaHelp</a>&amp; a, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1cudaHelp.html">cudaHelp</a>&amp; b);</div>
 
415
<div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;</div>
 
416
<div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
417
<div class="line"><a name="l00573"></a><span class="lineno"><a class="line" href="namespaceOpenMS.html#a5a5872835f722f5e757e3e7782d84120">  573</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="namespaceOpenMS.html#a5a5872835f722f5e757e3e7782d84120">intensityComparator</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1Peak2D.html">PeakType</a>&amp; a, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1Peak2D.html">PeakType</a>&amp; b)</div>
 
418
<div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;  {</div>
 
419
<div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;    <span class="keywordflow">return</span> a.<a class="code" href="classOpenMS_1_1Peak2D.html#a09903c7965f8ece31f2c1e07b41ae6dd">getIntensity</a>() &gt; b.<a class="code" href="classOpenMS_1_1Peak2D.html#a09903c7965f8ece31f2c1e07b41ae6dd">getIntensity</a>();</div>
 
420
<div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;  }</div>
 
421
<div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;</div>
 
422
<div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
423
<div class="line"><a name="l00579"></a><span class="lineno"><a class="line" href="namespaceOpenMS.html#ac46a8fc51b287c355e88e3778ff61dab">  579</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="namespaceOpenMS.html#ac46a8fc51b287c355e88e3778ff61dab">intensityAscendingComparator</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1Peak2D.html">PeakType</a>&amp; a, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1Peak2D.html">PeakType</a>&amp; b)</div>
 
424
<div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;  {</div>
 
425
<div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;    <span class="keywordflow">return</span> a.<a class="code" href="classOpenMS_1_1Peak2D.html#a09903c7965f8ece31f2c1e07b41ae6dd">getIntensity</a>() &lt; b.<a class="code" href="classOpenMS_1_1Peak2D.html#a09903c7965f8ece31f2c1e07b41ae6dd">getIntensity</a>();</div>
 
426
<div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;  }</div>
 
427
<div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;</div>
 
428
<div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
429
<div class="line"><a name="l00585"></a><span class="lineno"><a class="line" href="namespaceOpenMS.html#a66e95a71cb612182234eb778d0a2b83c">  585</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="namespaceOpenMS.html#a66e95a71cb612182234eb778d0a2b83c">intensityPointerComparator</a>(<a class="code" href="classOpenMS_1_1Peak2D.html">PeakType</a>* a, <a class="code" href="classOpenMS_1_1Peak2D.html">PeakType</a>* b)</div>
 
430
<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;  {</div>
 
431
<div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;    <span class="keywordflow">return</span> a-&gt;<a class="code" href="classOpenMS_1_1Peak2D.html#a09903c7965f8ece31f2c1e07b41ae6dd">getIntensity</a>() &gt; b-&gt;<a class="code" href="classOpenMS_1_1Peak2D.html#a09903c7965f8ece31f2c1e07b41ae6dd">getIntensity</a>();</div>
 
432
<div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;  }</div>
 
433
<div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;</div>
 
434
<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
435
<div class="line"><a name="l00591"></a><span class="lineno"><a class="line" href="namespaceOpenMS.html#a98090d3ef79d5636476a89689b4367e0">  591</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="namespaceOpenMS.html#a98090d3ef79d5636476a89689b4367e0">positionComparator</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1Peak2D.html">PeakType</a>&amp; a, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1Peak2D.html">PeakType</a>&amp; b)</div>
 
436
<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;  {</div>
 
437
<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;    <span class="keywordflow">return</span> a.<a class="code" href="classOpenMS_1_1Peak2D.html#a6fefef82aae7a3208e71648e763d5ea4">getMZ</a>() &lt; b.<a class="code" href="classOpenMS_1_1Peak2D.html#a6fefef82aae7a3208e71648e763d5ea4">getMZ</a>();</div>
 
438
<div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;  }</div>
 
439
<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;</div>
 
440
<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
441
<div class="line"><a name="l00597"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a40a60540d9f10eb87e4066eff10b1086">  597</a></span>&#160;  <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a40a60540d9f10eb87e4066eff10b1086">IsotopeWaveletTransform&lt;PeakType&gt;::IsotopeWaveletTransform</a>()</div>
 
442
<div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;  {</div>
 
443
<div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;    tmp_boxes_ = <span class="keyword">new</span> std::vector&lt;std::multimap&lt;DoubleReal, Box&gt; &gt;(1);</div>
 
444
<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;    av_MZ_spacing_ = 1;</div>
 
445
<div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;    max_scan_size_ = 0;</div>
 
446
<div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;    max_mz_cutoff_ = 3;</div>
 
447
<div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;    max_num_peaks_per_pattern_ = 3;</div>
 
448
<div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;    hr_data_ = <span class="keyword">false</span>;</div>
 
449
<div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;    intenstype_ = <span class="stringliteral">&quot;ref&quot;</span>;</div>
 
450
<div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;<span class="preprocessor">#ifdef OPENMS_HAS_CUDA</span></div>
 
451
<div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;<span class="preprocessor"></span>    largest_array_size_ = 0;</div>
 
452
<div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;    num_elements_ = 0;</div>
 
453
<div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;    h_data_ = <a class="code" href="IsotopeWaveletParallelFor_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;</div>
 
454
<div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;    h_pos_ = <a class="code" href="IsotopeWaveletParallelFor_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;</div>
 
455
<div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;<span class="preprocessor">#endif</span></div>
 
456
<div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;<span class="preprocessor"></span>  }</div>
 
457
<div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;</div>
 
458
<div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
459
<div class="line"><a name="l00615"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a0845c7908e6199d8f9a5886da052c5d3">  615</a></span>&#160;  <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a40a60540d9f10eb87e4066eff10b1086">IsotopeWaveletTransform&lt;PeakType&gt;::IsotopeWaveletTransform</a>(<span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> min_mz, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> max_mz, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> max_charge, <span class="keyword">const</span> <a class="code" href="group__Concept.html#gaf9ecec2d692138fab9167164a457cbd4">Size</a> max_scan_size, <span class="keyword">const</span> <span class="keywordtype">bool</span> use_cuda, <span class="keyword">const</span> <span class="keywordtype">bool</span> hr_data, <a class="code" href="classOpenMS_1_1String.html">String</a> intenstype)</div>
 
460
<div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;  {</div>
 
461
<div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;    max_charge_ = max_charge;</div>
 
462
<div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;    max_scan_size_ = max_scan_size;</div>
 
463
<div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;    hr_data_ = hr_data;</div>
 
464
<div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;    intenstype_ = intenstype;</div>
 
465
<div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;    tmp_boxes_ = <span class="keyword">new</span> std::vector&lt;std::multimap&lt;DoubleReal, Box&gt; &gt;(max_charge);</div>
 
466
<div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;    <span class="keywordflow">if</span> (max_scan_size &lt;= 0) <span class="comment">//only important for the CPU</span></div>
 
467
<div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;    {</div>
 
468
<div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;      <a class="code" href="classOpenMS_1_1IsotopeWavelet.html#acbf2fce508793c4f12e20327ec887fb4">IsotopeWavelet::init</a>(max_mz, max_charge);</div>
 
469
<div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;    }</div>
 
470
<div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;</div>
 
471
<div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;    av_MZ_spacing_ = 1;</div>
 
472
<div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;    max_mz_cutoff_ =  <a class="code" href="classOpenMS_1_1IsotopeWavelet.html#aa4c1055469be0ca451cdaef1514d3981">IsotopeWavelet::getMzPeakCutOffAtMonoPos</a>(max_mz, max_charge);</div>
 
473
<div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;    max_num_peaks_per_pattern_ =  <a class="code" href="classOpenMS_1_1IsotopeWavelet.html#a4ed32478c0f092c6507b7fa4c7539c9a">IsotopeWavelet::getNumPeakCutOff</a>(max_mz, max_charge);</div>
 
474
<div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;</div>
 
475
<div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;<span class="preprocessor">#ifdef OPENMS_HAS_CUDA</span></div>
 
476
<div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;<span class="preprocessor"></span>    <span class="keywordflow">if</span> (use_cuda) <span class="comment">//only important for the GPU</span></div>
 
477
<div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;    {</div>
 
478
<div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;      <span class="keywordflow">if</span> (hr_data_)</div>
 
479
<div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;      {</div>
 
480
<div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;        max_scan_size_ = max_scan_size * (4 * (max_mz_cutoff_ - 1) - 1);</div>
 
481
<div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;      }</div>
 
482
<div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;      largest_array_size_ =  pow(2, ceil(log(max_scan_size_ +  <a class="code" href="namespaceOpenMS_1_1Constants.html#a59acdd54ace8132637f245f72b551e74">Constants::CUDA_EXTENDED_BLOCK_SIZE_MAX</a>) / log(2.0)));</div>
 
483
<div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;</div>
 
484
<div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;      cuda_positions_.reserve(largest_array_size_);</div>
 
485
<div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;      cuda_intensities_.reserve(largest_array_size_);</div>
 
486
<div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;      indices_.resize(largest_array_size_);</div>
 
487
<div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;      <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> q = 0; q &lt; largest_array_size_; ++q)</div>
 
488
<div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;      {</div>
 
489
<div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;        indices_[q] = q;</div>
 
490
<div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;      }</div>
 
491
<div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;</div>
 
492
<div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;      h_data_ = (<span class="keywordtype">float</span>*) malloc(largest_array_size_ * <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>));</div>
 
493
<div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;      h_pos_ = (<span class="keywordtype">int</span>*) malloc(largest_array_size_ * <span class="keyword">sizeof</span>(<span class="keywordtype">int</span>));</div>
 
494
<div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;    }</div>
 
495
<div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;    <span class="keywordflow">else</span></div>
 
496
<div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;    {</div>
 
497
<div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;      h_data_ = <a class="code" href="IsotopeWaveletParallelFor_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;</div>
 
498
<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;      h_pos_ = <a class="code" href="IsotopeWaveletParallelFor_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;</div>
 
499
<div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;      <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> size_estimate((<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a>)ceil(max_scan_size_ / (max_mz - min_mz)));</div>
 
500
<div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;      <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> to_reserve((<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a>)ceil(size_estimate * max_num_peaks_per_pattern_ * <a class="code" href="namespaceOpenMS_1_1Constants.html#a4045630757d161b1f4dc0d2248202fd0">Constants::IW_NEUTRON_MASS</a>));</div>
 
501
<div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;      psi_.reserve(to_reserve); <span class="comment">//The wavelet</span></div>
 
502
<div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;      prod_.reserve(to_reserve);</div>
 
503
<div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;      xs_.reserve(to_reserve);</div>
 
504
<div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;      interpol_xs_.resize(<a class="code" href="namespaceOpenMS_1_1Constants.html#a7beffa0fddafc13a126c70c4146efed4">Constants::DEFAULT_NUM_OF_INTERPOLATION_POINTS</a>);</div>
 
505
<div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;      interpol_ys_.resize(<a class="code" href="namespaceOpenMS_1_1Constants.html#a7beffa0fddafc13a126c70c4146efed4">Constants::DEFAULT_NUM_OF_INTERPOLATION_POINTS</a>);</div>
 
506
<div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;    }</div>
 
507
<div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;<span class="preprocessor">#else</span></div>
 
508
<div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;<span class="preprocessor"></span>    <span class="keywordflow">if</span> (!use_cuda)</div>
 
509
<div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;    {</div>
 
510
<div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;      <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> size_estimate((<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a>)ceil(max_scan_size_ / (max_mz - min_mz)));</div>
 
511
<div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;      <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> to_reserve((<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a>)ceil(size_estimate * max_num_peaks_per_pattern_ * <a class="code" href="namespaceOpenMS_1_1Constants.html#a4045630757d161b1f4dc0d2248202fd0">Constants::IW_NEUTRON_MASS</a>));</div>
 
512
<div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;      psi_.reserve(to_reserve); <span class="comment">//The wavelet</span></div>
 
513
<div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;      prod_.reserve(to_reserve);</div>
 
514
<div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;      xs_.reserve(to_reserve);</div>
 
515
<div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;      interpol_xs_.resize(<a class="code" href="namespaceOpenMS_1_1Constants.html#a7beffa0fddafc13a126c70c4146efed4">Constants::DEFAULT_NUM_OF_INTERPOLATION_POINTS</a>);</div>
 
516
<div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;      interpol_ys_.resize(<a class="code" href="namespaceOpenMS_1_1Constants.html#a7beffa0fddafc13a126c70c4146efed4">Constants::DEFAULT_NUM_OF_INTERPOLATION_POINTS</a>);</div>
 
517
<div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;    }</div>
 
518
<div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;<span class="preprocessor">#endif</span></div>
 
519
<div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;<span class="preprocessor"></span>  }</div>
 
520
<div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;</div>
 
521
<div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
522
<div class="line"><a name="l00678"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a0c0243adc4a1eb30bf62144a88181131">  678</a></span>&#160;  <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a0c0243adc4a1eb30bf62144a88181131">IsotopeWaveletTransform&lt;PeakType&gt;::~IsotopeWaveletTransform</a>()</div>
 
523
<div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;  {</div>
 
524
<div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;<span class="preprocessor">#ifdef OPENMS_HAS_CUDA</span></div>
 
525
<div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;<span class="preprocessor"></span>    <span class="keywordflow">if</span> (h_data_ != <a class="code" href="IsotopeWaveletParallelFor_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>)</div>
 
526
<div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;      free(h_data_);</div>
 
527
<div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;    <span class="keywordflow">if</span> (h_pos_ != <a class="code" href="IsotopeWaveletParallelFor_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>)</div>
 
528
<div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;      free(h_pos_);</div>
 
529
<div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;    h_data_ = <a class="code" href="IsotopeWaveletParallelFor_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;</div>
 
530
<div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;    h_pos_ = <a class="code" href="IsotopeWaveletParallelFor_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;</div>
 
531
<div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;<span class="preprocessor">#endif</span></div>
 
532
<div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;<span class="preprocessor"></span></div>
 
533
<div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;    <span class="keyword">delete</span> (tmp_boxes_);</div>
 
534
<div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;  }</div>
 
535
<div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;</div>
 
536
<div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
537
<div class="line"><a name="l00693"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a54c204f5b2d6a44874df21661e992224">  693</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a54c204f5b2d6a44874df21661e992224">IsotopeWaveletTransform&lt;PeakType&gt;::getTransform</a>(<a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; c_trans, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; c_ref, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>)</div>
 
538
<div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;  {</div>
 
539
<div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;    <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> spec_size((<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a>)c_ref.size());</div>
 
540
<div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;    <span class="comment">//in the very unlikely case that size_t will not fit to int anymore this will be a problem of course</span></div>
 
541
<div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;    <span class="comment">//for the sake of simplicity (we need here a signed int) we do not cast at every following comparison individually</span></div>
 
542
<div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;    <a class="code" href="classunsigned_01int.html">UInt</a> charge = c + 1;</div>
 
543
<div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> value, T_boundary_left, T_boundary_right, old, c_diff, current, old_pos, my_local_MZ, my_local_lambda, origin, c_mz;</div>
 
544
<div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;</div>
 
545
<div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> my_local_pos = 0; my_local_pos &lt; spec_size; ++my_local_pos)</div>
 
546
<div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;    {</div>
 
547
<div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;      value = 0; T_boundary_left = 0, T_boundary_right = <a class="code" href="classOpenMS_1_1IsotopeWavelet.html#aa4c1055469be0ca451cdaef1514d3981">IsotopeWavelet::getMzPeakCutOffAtMonoPos</a>(c_ref[my_local_pos].getMZ(), charge) / (<a class="code" href="group__Concept.html#gace75bfb1aba684e874dffee13738bd15">DoubleReal</a>)charge;</div>
 
548
<div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;      old = 0; old_pos = (my_local_pos - from_max_to_left_ - 1 &gt;= 0) ? c_ref[my_local_pos - from_max_to_left_ - 1].getMZ() : c_ref[0].getMZ() - min_spacing_;</div>
 
549
<div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;      my_local_MZ = c_ref[my_local_pos].getMZ(); my_local_lambda = <a class="code" href="classOpenMS_1_1IsotopeWavelet.html#a93ce8c24484a3faef662be1bc3ccbeca">IsotopeWavelet::getLambdaL</a>(my_local_MZ * charge);</div>
 
550
<div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;      c_diff = 0;</div>
 
551
<div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;      origin = -my_local_MZ + <a class="code" href="namespaceOpenMS_1_1Constants.html#afb04ba9e1308cbbaa20a944f0ab124af">Constants::IW_QUARTER_NEUTRON_MASS</a> / (<a class="code" href="group__Concept.html#gace75bfb1aba684e874dffee13738bd15">DoubleReal</a>)charge;</div>
 
552
<div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;</div>
 
553
<div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;      <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> current_conv_pos =  std::max(0, my_local_pos - from_max_to_left_); c_diff &lt; T_boundary_right; ++current_conv_pos)</div>
 
554
<div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;      {</div>
 
555
<div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;        <span class="keywordflow">if</span> (current_conv_pos &gt;= spec_size)</div>
 
556
<div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;        {</div>
 
557
<div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;          value += 0.5 * old * min_spacing_;</div>
 
558
<div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;          <span class="keywordflow">break</span>;</div>
 
559
<div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;        }</div>
 
560
<div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;</div>
 
561
<div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;        c_mz = c_ref[current_conv_pos].getMZ();</div>
 
562
<div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;        c_diff = c_mz + origin;</div>
 
563
<div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;</div>
 
564
<div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;        <span class="comment">//Attention! The +1. has nothing to do with the charge, it is caused by the wavelet&#39;s formula (tz1).</span></div>
 
565
<div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;        current = c_diff &gt; T_boundary_left &amp;&amp; c_diff &lt;= T_boundary_right ? <a class="code" href="classOpenMS_1_1IsotopeWavelet.html#aef7238efd522b4ad9d4ce12d33e51709">IsotopeWavelet::getValueByLambda</a>(my_local_lambda, c_diff * charge + 1.) * c_ref[current_conv_pos].getIntensity() : 0;</div>
 
566
<div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;</div>
 
567
<div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;        value += 0.5 * (current + old) * (c_mz - old_pos);</div>
 
568
<div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;</div>
 
569
<div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;        old = current;</div>
 
570
<div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;        old_pos = c_mz;</div>
 
571
<div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;      }</div>
 
572
<div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;</div>
 
573
<div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;</div>
 
574
<div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;</div>
 
575
<div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;      c_trans[my_local_pos].setIntensity(value);</div>
 
576
<div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;    }</div>
 
577
<div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;  }</div>
 
578
<div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;</div>
 
579
<div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
580
<div class="line"><a name="l00736"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#ad9ced5a5293256ab54096986d28d693f">  736</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#ad9ced5a5293256ab54096986d28d693f">IsotopeWaveletTransform&lt;PeakType&gt;::getTransformHighRes</a>(<a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; c_trans, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; c_ref, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>)</div>
 
581
<div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;  {</div>
 
582
<div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;    <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> spec_size((<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a>)c_ref.size());</div>
 
583
<div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;    <span class="comment">//in the very unlikely case that size_t will not fit to int anymore this will be a problem of course</span></div>
 
584
<div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;    <span class="comment">//for the sake of simplicity (we need here a signed int) we do not cast at every following comparison individually</span></div>
 
585
<div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;    <a class="code" href="classunsigned_01int.html">UInt</a> charge = c + 1;</div>
 
586
<div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> value, T_boundary_left, T_boundary_right, c_diff, current, my_local_MZ, my_local_lambda, origin, c_mz;</div>
 
587
<div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;</div>
 
588
<div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> my_local_pos = 0; my_local_pos &lt; spec_size; ++my_local_pos)</div>
 
589
<div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;    {</div>
 
590
<div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;      value = 0; T_boundary_left = 0, T_boundary_right = <a class="code" href="classOpenMS_1_1IsotopeWavelet.html#aa4c1055469be0ca451cdaef1514d3981">IsotopeWavelet::getMzPeakCutOffAtMonoPos</a>(c_ref[my_local_pos].getMZ(), charge) / (<a class="code" href="group__Concept.html#gace75bfb1aba684e874dffee13738bd15">DoubleReal</a>)charge;</div>
 
591
<div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;</div>
 
592
<div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;</div>
 
593
<div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;      my_local_MZ = c_ref[my_local_pos].getMZ(); my_local_lambda = <a class="code" href="classOpenMS_1_1IsotopeWavelet.html#a93ce8c24484a3faef662be1bc3ccbeca">IsotopeWavelet::getLambdaL</a>(my_local_MZ * charge);</div>
 
594
<div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;      c_diff = 0;</div>
 
595
<div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;      origin = -my_local_MZ + <a class="code" href="namespaceOpenMS_1_1Constants.html#afb04ba9e1308cbbaa20a944f0ab124af">Constants::IW_QUARTER_NEUTRON_MASS</a> / (<a class="code" href="group__Concept.html#gace75bfb1aba684e874dffee13738bd15">DoubleReal</a>)charge;</div>
 
596
<div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;</div>
 
597
<div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;      <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> current_conv_pos =  std::max(0, my_local_pos - from_max_to_left_); c_diff &lt; T_boundary_right; ++current_conv_pos)</div>
 
598
<div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;      {</div>
 
599
<div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;        <span class="keywordflow">if</span> (current_conv_pos &gt;= spec_size)</div>
 
600
<div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;        {</div>
 
601
<div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160;          <span class="keywordflow">break</span>;</div>
 
602
<div class="line"><a name="l00758"></a><span class="lineno">  758</span>&#160;        }</div>
 
603
<div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160;</div>
 
604
<div class="line"><a name="l00760"></a><span class="lineno">  760</span>&#160;        c_mz = c_ref[current_conv_pos].getMZ();</div>
 
605
<div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;        c_diff = c_mz + origin;</div>
 
606
<div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;</div>
 
607
<div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160;        <span class="comment">//Attention! The +1. has nothing to do with the charge, it is caused by the wavelet&#39;s formula (tz1).</span></div>
 
608
<div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;        current = c_diff &gt; T_boundary_left &amp;&amp; c_diff &lt;= T_boundary_right ? <a class="code" href="classOpenMS_1_1IsotopeWavelet.html#aef7238efd522b4ad9d4ce12d33e51709">IsotopeWavelet::getValueByLambda</a>(my_local_lambda, c_diff * charge + 1.) * c_ref[current_conv_pos].getIntensity() : 0;</div>
 
609
<div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;</div>
 
610
<div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160;        value += current;</div>
 
611
<div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;      }</div>
 
612
<div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160;</div>
 
613
<div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160;      c_trans[my_local_pos].setIntensity(value);</div>
 
614
<div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160;    }</div>
 
615
<div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160;  }</div>
 
616
<div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160;</div>
 
617
<div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
618
<div class="line"><a name="l00774"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#ab99b362c90b6915c337cc919b73b599f">  774</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#ab99b362c90b6915c337cc919b73b599f">IsotopeWaveletTransform&lt;PeakType&gt;::initializeScan</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; c_ref, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>)</div>
 
619
<div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;  {</div>
 
620
<div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160;    data_length_ = (<a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a>) c_ref.size();</div>
 
621
<div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160;    computeMinSpacing(c_ref);</div>
 
622
<div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160;    <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> wavelet_length = 0, quarter_length = 0;</div>
 
623
<div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;</div>
 
624
<div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;    <span class="keywordflow">if</span> (hr_data_) <span class="comment">//We have to check this separately, because the simply estimation for LowRes data is destroyed by large gaps</span></div>
 
625
<div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;    {</div>
 
626
<div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160;      <a class="code" href="classunsigned_01int.html">UInt</a> c_mz_cutoff;</div>
 
627
<div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;      <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;::const_iterator</a> start_iter, end_iter;</div>
 
628
<div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;      <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 0; i &lt; data_length_; ++i)</div>
 
629
<div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;      {</div>
 
630
<div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160;        c_mz_cutoff =  <a class="code" href="classOpenMS_1_1IsotopeWavelet.html#aa4c1055469be0ca451cdaef1514d3981">IsotopeWavelet::getMzPeakCutOffAtMonoPos</a>(c_ref[i].getMZ(), c + 1);</div>
 
631
<div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160;        start_iter = c_ref.<a class="code" href="classOpenMS_1_1MSSpectrum.html#add06770712321b6e489bbdbcd123c888">MZEnd</a>(c_ref[i].getMZ());</div>
 
632
<div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160;        end_iter = c_ref.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a808327302a2ba3fb630ea132d32db942">MZBegin</a>(c_ref[i].getMZ() + c_mz_cutoff);</div>
 
633
<div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160;        wavelet_length = std::max((<a class="code" href="group__Concept.html#gae113cb41304c6692c7bf5d0624dc6f0f">SignedSize</a>) wavelet_length, distance(start_iter, end_iter) + 1);</div>
 
634
<div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160;        end_iter = c_ref.<a class="code" href="classOpenMS_1_1MSSpectrum.html#add06770712321b6e489bbdbcd123c888">MZEnd</a>(c_ref[i].getMZ() - <a class="code" href="namespaceOpenMS_1_1Constants.html#afb04ba9e1308cbbaa20a944f0ab124af">Constants::IW_QUARTER_NEUTRON_MASS</a> / <a class="code" href="group__Concept.html#gace75bfb1aba684e874dffee13738bd15">DoubleReal</a>(c + 1.));</div>
 
635
<div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160;        quarter_length = std::max((<a class="code" href="group__Concept.html#gae113cb41304c6692c7bf5d0624dc6f0f">SignedSize</a>) quarter_length, distance(end_iter, start_iter) + 1);</div>
 
636
<div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160;      }</div>
 
637
<div class="line"><a name="l00793"></a><span class="lineno">  793</span>&#160;    }</div>
 
638
<div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160;    <span class="keywordflow">else</span></div>
 
639
<div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160;    {</div>
 
640
<div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160;      <span class="comment">//CHANGED</span></div>
 
641
<div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160;      max_mz_cutoff_ =  <a class="code" href="classOpenMS_1_1IsotopeWavelet.html#aa4c1055469be0ca451cdaef1514d3981">IsotopeWavelet::getMzPeakCutOffAtMonoPos</a>(c_ref[data_length_ - 1].getMZ(), max_charge_);</div>
 
642
<div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;      wavelet_length = (<a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a>) ceil(max_mz_cutoff_ / min_spacing_);</div>
 
643
<div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;    }</div>
 
644
<div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;    <span class="comment">//... done</span></div>
 
645
<div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;</div>
 
646
<div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;</div>
 
647
<div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;    <span class="keywordflow">if</span> (wavelet_length &gt; (<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a>) c_ref.size())</div>
 
648
<div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;    {</div>
 
649
<div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;      std::cout &lt;&lt; <span class="stringliteral">&quot;Warning: the extremal length of the wavelet is larger (&quot;</span> &lt;&lt; wavelet_length &lt;&lt; <span class="stringliteral">&quot;) than the number of data points (&quot;</span> &lt;&lt; c_ref.size() &lt;&lt; <span class="stringliteral">&quot;). This might (!) severely affect the transform.&quot;</span> &lt;&lt; std::endl;</div>
 
650
<div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160;      std::cout &lt;&lt; <span class="stringliteral">&quot;Minimal spacing: &quot;</span> &lt;&lt; min_spacing_ &lt;&lt; std::endl;</div>
 
651
<div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160;      std::cout &lt;&lt; <span class="stringliteral">&quot;Warning/Error generated at scan with RT &quot;</span> &lt;&lt; c_ref.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a3da529bd3240fa0d7148484bbef0b9d7">getRT</a>() &lt;&lt; <span class="stringliteral">&quot;.&quot;</span> &lt;&lt; std::endl;</div>
 
652
<div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160;    }</div>
 
653
<div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160;</div>
 
654
<div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160;    <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> max_index = (<a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a>) (<a class="code" href="namespaceOpenMS_1_1Constants.html#afb04ba9e1308cbbaa20a944f0ab124af">Constants::IW_QUARTER_NEUTRON_MASS</a> / min_spacing_);</div>
 
655
<div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;    from_max_to_left_ = max_index;</div>
 
656
<div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;    from_max_to_right_ = wavelet_length - 1 - from_max_to_left_;</div>
 
657
<div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160;  }</div>
 
658
<div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160;</div>
 
659
<div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
660
<div class="line"><a name="l00816"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#acdf960f3bc80fd3c9751bd698ca96be8">  816</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#acdf960f3bc80fd3c9751bd698ca96be8">IsotopeWaveletTransform&lt;PeakType&gt;::computeMinSpacing</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; c_ref)</div>
 
661
<div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;  {</div>
 
662
<div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160;    min_spacing_ = INT_MAX;</div>
 
663
<div class="line"><a name="l00819"></a><span class="lineno">  819</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> c_conv_pos = 1; c_conv_pos &lt; c_ref.size(); ++c_conv_pos)</div>
 
664
<div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160;    {</div>
 
665
<div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160;      min_spacing_ = std::min(min_spacing_, c_ref[c_conv_pos].getMZ() - c_ref[c_conv_pos - 1].getMZ());</div>
 
666
<div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;    }</div>
 
667
<div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160;  }</div>
 
668
<div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160;</div>
 
669
<div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160;<span class="preprocessor">#ifdef OPENMS_HAS_CUDA</span></div>
 
670
<div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160;<span class="preprocessor"></span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
671
<div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html">IsotopeWaveletTransform&lt;PeakType&gt;::finalizeScanCuda</a>()</div>
 
672
<div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;  {</div>
 
673
<div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;    (cudaFree(cuda_device_pos_));</div>
 
674
<div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160;    (cudaFree(cuda_device_intens_));</div>
 
675
<div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160;    (cudaFree(cuda_device_trans_intens_));</div>
 
676
<div class="line"><a name="l00832"></a><span class="lineno">  832</span>&#160;    (cudaFree(cuda_device_fwd2_));</div>
 
677
<div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160;    (cudaFree(cuda_device_trans_intens_sorted_));</div>
 
678
<div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;    (cudaFree(cuda_device_posindices_sorted_));</div>
 
679
<div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;    (cudaFree(cuda_device_scores_));</div>
 
680
<div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160;  }</div>
 
681
<div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;</div>
 
682
<div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
683
<div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;  <span class="keywordtype">int</span> IsotopeWaveletTransform&lt;PeakType&gt;::initializeScanCuda(<span class="keyword">const</span> MSSpectrum&lt;PeakType&gt;&amp; scan, <span class="keyword">const</span> <a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a> <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>)</div>
 
684
<div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;  {</div>
 
685
<div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;    data_length_ = scan.size();</div>
 
686
<div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160;</div>
 
687
<div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160;    std::vector&lt;float&gt; pre_positions(data_length_), pre_intensities(data_length_);</div>
 
688
<div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;    <span class="keywordtype">float</span> c_spacing;</div>
 
689
<div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;    min_spacing_ = INT_MAX;</div>
 
690
<div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;    pre_positions[0] = scan[0].getMZ();</div>
 
691
<div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;    pre_intensities[0] = scan[0].getIntensity();</div>
 
692
<div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;</div>
 
693
<div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a> i = 1; i &lt; data_length_; ++i)</div>
 
694
<div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;    {</div>
 
695
<div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160;      pre_positions[i] = scan[i].getMZ();</div>
 
696
<div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160;      c_spacing = pre_positions[i] - pre_positions[i - 1];</div>
 
697
<div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;      <span class="keywordflow">if</span> (c_spacing &lt; min_spacing_)</div>
 
698
<div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;      {</div>
 
699
<div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;        min_spacing_ = c_spacing;</div>
 
700
<div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;      }</div>
 
701
<div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;      pre_intensities[i] = scan[i].getIntensity();</div>
 
702
<div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160;    }</div>
 
703
<div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;    <span class="keywordflow">if</span> (min_spacing_ == INT_MAX) <span class="comment">//spectrum consists of a single data point</span></div>
 
704
<div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160;    {</div>
 
705
<div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160;      std::cout &lt;&lt; <span class="stringliteral">&quot;Scan consits of a single point. Unable to compute transform.&quot;</span> &lt;&lt; std::endl;</div>
 
706
<div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="namespaceOpenMS_1_1Constants.html#ad10c7352b89f50d074d15d94a58ae773">Constants::CUDA_INIT_FAIL</a>;</div>
 
707
<div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;    }</div>
 
708
<div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;</div>
 
709
<div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;    <span class="comment">//Estimating the wave_length ...</span></div>
 
710
<div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160;    <a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a> wavelet_length = 0, quarter_length = 0;</div>
 
711
<div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160;    <span class="keywordflow">if</span> (hr_data_) <span class="comment">//We have to check this separately, because the simply estimation for LowRes data is destroyed by large gaps</span></div>
 
712
<div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160;    {</div>
 
713
<div class="line"><a name="l00869"></a><span class="lineno">  869</span>&#160;      <a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a> c_mz_cutoff;</div>
 
714
<div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;      <span class="keyword">typename</span> MSSpectrum&lt;PeakType&gt;::const_iterator start_iter, end_iter;</div>
 
715
<div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;      <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a> i = 0; i &lt; data_length_; ++i)</div>
 
716
<div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160;      {</div>
 
717
<div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160;        c_mz_cutoff =  <a class="code" href="classOpenMS_1_1IsotopeWavelet.html#aa4c1055469be0ca451cdaef1514d3981">IsotopeWavelet::getMzPeakCutOffAtMonoPos</a>(scan[i].getMZ(), c + 1);</div>
 
718
<div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160;        start_iter = scan.MZEnd(scan[i].getMZ());</div>
 
719
<div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160;        end_iter = scan.MZBegin(scan[i].getMZ() + c_mz_cutoff);</div>
 
720
<div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160;        wavelet_length = std::max((<span class="keywordtype">long</span> <span class="keywordtype">int</span>) wavelet_length, distance(start_iter, end_iter) + 1);</div>
 
721
<div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160;        end_iter = scan.MZEnd(scan[i].getMZ() - <a class="code" href="namespaceOpenMS_1_1Constants.html#afb04ba9e1308cbbaa20a944f0ab124af">Constants::IW_QUARTER_NEUTRON_MASS</a> / <a class="code" href="group__Concept.html#gace75bfb1aba684e874dffee13738bd15">DoubleReal</a>(c + 1.));</div>
 
722
<div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;        quarter_length = std::max((<span class="keywordtype">long</span> <span class="keywordtype">int</span>) quarter_length, distance(end_iter, start_iter) + 1);</div>
 
723
<div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;      }</div>
 
724
<div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;    }</div>
 
725
<div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;    <span class="keywordflow">else</span></div>
 
726
<div class="line"><a name="l00882"></a><span class="lineno">  882</span>&#160;    {</div>
 
727
<div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160;      <span class="comment">//CHANGED</span></div>
 
728
<div class="line"><a name="l00884"></a><span class="lineno">  884</span>&#160;      max_mz_cutoff_ =  <a class="code" href="classOpenMS_1_1IsotopeWavelet.html#aa4c1055469be0ca451cdaef1514d3981">IsotopeWavelet::getMzPeakCutOffAtMonoPos</a>(scan[data_length_ - 1].getMZ(), max_charge_);</div>
 
729
<div class="line"><a name="l00885"></a><span class="lineno">  885</span>&#160;      wavelet_length = (<a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a>) ceil(max_mz_cutoff_ / min_spacing_);</div>
 
730
<div class="line"><a name="l00886"></a><span class="lineno">  886</span>&#160;    }</div>
 
731
<div class="line"><a name="l00887"></a><span class="lineno">  887</span>&#160;    <span class="comment">//... done</span></div>
 
732
<div class="line"><a name="l00888"></a><span class="lineno">  888</span>&#160;</div>
 
733
<div class="line"><a name="l00889"></a><span class="lineno">  889</span>&#160;    <span class="keywordflow">if</span> (wavelet_length &gt; data_length_ || wavelet_length == 1) <span class="comment">//==1, because of &#39;ceil&#39;</span></div>
 
734
<div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160;    {</div>
 
735
<div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160;      std::cout &lt;&lt; <span class="stringliteral">&quot;Warning: the extremal length of the wavelet is larger (&quot;</span> &lt;&lt; wavelet_length &lt;&lt; <span class="stringliteral">&quot;) than the number of data points (&quot;</span> &lt;&lt; data_length_ &lt;&lt; <span class="stringliteral">&quot;). This might (!) severely affect the transform.&quot;</span> &lt;&lt; std::endl;</div>
 
736
<div class="line"><a name="l00892"></a><span class="lineno">  892</span>&#160;      std::cout &lt;&lt; <span class="stringliteral">&quot;Minimal spacing: &quot;</span> &lt;&lt; min_spacing_ &lt;&lt; std::endl;</div>
 
737
<div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160;      std::cout &lt;&lt; <span class="stringliteral">&quot;Warning/Error generated at scan with RT &quot;</span> &lt;&lt; scan.getRT() &lt;&lt; <span class="stringliteral">&quot;.&quot;</span> &lt;&lt; std::endl;</div>
 
738
<div class="line"><a name="l00894"></a><span class="lineno">  894</span>&#160;    }</div>
 
739
<div class="line"><a name="l00895"></a><span class="lineno">  895</span>&#160;</div>
 
740
<div class="line"><a name="l00896"></a><span class="lineno">  896</span>&#160;    <a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a> max_index;</div>
 
741
<div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160;    <span class="keywordflow">if</span> (hr_data_)</div>
 
742
<div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;    {</div>
 
743
<div class="line"><a name="l00899"></a><span class="lineno">  899</span>&#160;      max_index = quarter_length;</div>
 
744
<div class="line"><a name="l00900"></a><span class="lineno">  900</span>&#160;    }</div>
 
745
<div class="line"><a name="l00901"></a><span class="lineno">  901</span>&#160;    <span class="keywordflow">else</span></div>
 
746
<div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160;    {</div>
 
747
<div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160;      max_index = (<a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a>) (<a class="code" href="namespaceOpenMS_1_1Constants.html#afb04ba9e1308cbbaa20a944f0ab124af">Constants::IW_QUARTER_NEUTRON_MASS</a> / min_spacing_);</div>
 
748
<div class="line"><a name="l00904"></a><span class="lineno">  904</span>&#160;    }</div>
 
749
<div class="line"><a name="l00905"></a><span class="lineno">  905</span>&#160;    from_max_to_left_ = max_index;</div>
 
750
<div class="line"><a name="l00906"></a><span class="lineno">  906</span>&#160;    from_max_to_right_ = wavelet_length - 1 - from_max_to_left_;</div>
 
751
<div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160;</div>
 
752
<div class="line"><a name="l00908"></a><span class="lineno">  908</span>&#160;    <a class="code" href="classInt.html">Int</a> problem_size = <a class="code" href="namespaceOpenMS_1_1Constants.html#a09b73b600db9441510ebfa59cb7dd527">Constants::CUDA_BLOCK_SIZE_MAX</a>;</div>
 
753
<div class="line"><a name="l00909"></a><span class="lineno">  909</span>&#160;    to_load_ = problem_size + from_max_to_left_ + from_max_to_right_;</div>
 
754
<div class="line"><a name="l00910"></a><span class="lineno">  910</span>&#160;</div>
 
755
<div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160;    <a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a> missing_points = problem_size - (data_length_ % problem_size);</div>
 
756
<div class="line"><a name="l00912"></a><span class="lineno">  912</span>&#160;    overall_size_ = wavelet_length - 1 + data_length_ + missing_points;</div>
 
757
<div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160;</div>
 
758
<div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160;    num_elements_ = overall_size_;</div>
 
759
<div class="line"><a name="l00915"></a><span class="lineno">  915</span>&#160;    <a class="code" href="classInt.html">Int</a> dev_num_elements = 1, tmp = overall_size_ &gt;&gt; 1;</div>
 
760
<div class="line"><a name="l00916"></a><span class="lineno">  916</span>&#160;</div>
 
761
<div class="line"><a name="l00917"></a><span class="lineno">  917</span>&#160;    <span class="comment">//Get power of 2 elements (necessary for the sorting algorithm)</span></div>
 
762
<div class="line"><a name="l00918"></a><span class="lineno">  918</span>&#160;    <span class="keywordflow">while</span> (tmp)</div>
 
763
<div class="line"><a name="l00919"></a><span class="lineno">  919</span>&#160;    {</div>
 
764
<div class="line"><a name="l00920"></a><span class="lineno">  920</span>&#160;      dev_num_elements &lt;&lt;= 1;</div>
 
765
<div class="line"><a name="l00921"></a><span class="lineno">  921</span>&#160;      tmp &gt;&gt;= 1;</div>
 
766
<div class="line"><a name="l00922"></a><span class="lineno">  922</span>&#160;    }</div>
 
767
<div class="line"><a name="l00923"></a><span class="lineno">  923</span>&#160;</div>
 
768
<div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160;    <span class="keywordflow">if</span> (num_elements_ &gt; dev_num_elements)</div>
 
769
<div class="line"><a name="l00925"></a><span class="lineno">  925</span>&#160;    {</div>
 
770
<div class="line"><a name="l00926"></a><span class="lineno">  926</span>&#160;      dev_num_elements &lt;&lt;= 1;</div>
 
771
<div class="line"><a name="l00927"></a><span class="lineno">  927</span>&#160;    }</div>
 
772
<div class="line"><a name="l00928"></a><span class="lineno">  928</span>&#160;</div>
 
773
<div class="line"><a name="l00929"></a><span class="lineno">  929</span>&#160;    <span class="keywordflow">if</span> (dev_num_elements &lt; <a class="code" href="namespaceOpenMS_1_1Constants.html#a7618dd262dddabd33123bb3f434bf8a3">Constants::CUDA_MIN_SORT_SIZE</a>)</div>
 
774
<div class="line"><a name="l00930"></a><span class="lineno">  930</span>&#160;    {</div>
 
775
<div class="line"><a name="l00931"></a><span class="lineno">  931</span>&#160;      dev_num_elements = <a class="code" href="namespaceOpenMS_1_1Constants.html#a7618dd262dddabd33123bb3f434bf8a3">Constants::CUDA_MIN_SORT_SIZE</a>;</div>
 
776
<div class="line"><a name="l00932"></a><span class="lineno">  932</span>&#160;    }</div>
 
777
<div class="line"><a name="l00933"></a><span class="lineno">  933</span>&#160;</div>
 
778
<div class="line"><a name="l00934"></a><span class="lineno">  934</span>&#160;    overall_size_ = dev_num_elements;</div>
 
779
<div class="line"><a name="l00935"></a><span class="lineno">  935</span>&#160;</div>
 
780
<div class="line"><a name="l00936"></a><span class="lineno">  936</span>&#160;    cuda_intensities_.resize(overall_size_, 0); cuda_positions_.resize(overall_size_, 0);</div>
 
781
<div class="line"><a name="l00937"></a><span class="lineno">  937</span>&#160;    <span class="comment">//Pad the values to the left; the positions should not matter if the values are zero</span></div>
 
782
<div class="line"><a name="l00938"></a><span class="lineno">  938</span>&#160;    <span class="keywordtype">float</span> first_pos = pre_positions[0];</div>
 
783
<div class="line"><a name="l00939"></a><span class="lineno">  939</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="classInt.html">Int</a> i = 0; i &lt; from_max_to_left_; ++i)</div>
 
784
<div class="line"><a name="l00940"></a><span class="lineno">  940</span>&#160;    {</div>
 
785
<div class="line"><a name="l00941"></a><span class="lineno">  941</span>&#160;      cuda_positions_[i] = first_pos - (from_max_to_left_ - i) * min_spacing_;</div>
 
786
<div class="line"><a name="l00942"></a><span class="lineno">  942</span>&#160;    }</div>
 
787
<div class="line"><a name="l00943"></a><span class="lineno">  943</span>&#160;</div>
 
788
<div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a> i = 0; i &lt; data_length_; ++i)</div>
 
789
<div class="line"><a name="l00945"></a><span class="lineno">  945</span>&#160;    {</div>
 
790
<div class="line"><a name="l00946"></a><span class="lineno">  946</span>&#160;      cuda_positions_[from_max_to_left_ + i] = pre_positions[i];</div>
 
791
<div class="line"><a name="l00947"></a><span class="lineno">  947</span>&#160;      cuda_intensities_[from_max_to_left_ + i] = pre_intensities[i];</div>
 
792
<div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160;    }</div>
 
793
<div class="line"><a name="l00949"></a><span class="lineno">  949</span>&#160;</div>
 
794
<div class="line"><a name="l00950"></a><span class="lineno">  950</span>&#160;    <span class="keywordtype">float</span> last_pos = pre_positions[pre_positions.size() - 1];</div>
 
795
<div class="line"><a name="l00951"></a><span class="lineno">  951</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a> i = 0; i &lt; missing_points + from_max_to_right_ + dev_num_elements - num_elements_; ++i)</div>
 
796
<div class="line"><a name="l00952"></a><span class="lineno">  952</span>&#160;    {</div>
 
797
<div class="line"><a name="l00953"></a><span class="lineno">  953</span>&#160;      cuda_positions_[from_max_to_left_ + data_length_ + i] = last_pos + (i + 1) * min_spacing_;</div>
 
798
<div class="line"><a name="l00954"></a><span class="lineno">  954</span>&#160;    }</div>
 
799
<div class="line"><a name="l00955"></a><span class="lineno">  955</span>&#160;</div>
 
800
<div class="line"><a name="l00956"></a><span class="lineno">  956</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
801
<div class="line"><a name="l00957"></a><span class="lineno">  957</span>&#160;<span class="preprocessor"></span>    std::stringstream name; name &lt;&lt; <span class="stringliteral">&quot;cuda_input_&quot;</span> &lt;&lt; scan.getRT() &lt;&lt; <span class="stringliteral">&quot;.out\0&quot;</span>;</div>
 
802
<div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160;    std::fstream outfile(name.str().c_str(), std::ios::out);</div>
 
803
<div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; overall_size_; ++i)</div>
 
804
<div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;      outfile &lt;&lt; cuda_positions_[i] &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; cuda_intensities_[i] &lt;&lt; std::endl;</div>
 
805
<div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;    outfile.close();</div>
 
806
<div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160;<span class="preprocessor">#endif</span></div>
 
807
<div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160;<span class="preprocessor"></span></div>
 
808
<div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160;</div>
 
809
<div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160;    dimBlock_ = dim3(<a class="code" href="namespaceOpenMS_1_1Constants.html#a09b73b600db9441510ebfa59cb7dd527">Constants::CUDA_BLOCK_SIZE_MAX</a>);</div>
 
810
<div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160;    to_compute_ = problem_size;</div>
 
811
<div class="line"><a name="l00967"></a><span class="lineno">  967</span>&#160;    dimGrid_ = dim3((data_length_ + missing_points) / problem_size);</div>
 
812
<div class="line"><a name="l00968"></a><span class="lineno">  968</span>&#160;</div>
 
813
<div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160;    (cudaMalloc(&amp;cuda_device_posindices_sorted_, overall_size_ * <span class="keyword">sizeof</span>(<span class="keywordtype">int</span>)));</div>
 
814
<div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160;    (cudaMalloc(&amp;cuda_device_pos_, overall_size_ * <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>)));</div>
 
815
<div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160;    (cudaMemcpy(cuda_device_pos_, &amp;(cuda_positions_[0]), overall_size_ * <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>), cudaMemcpyHostToDevice));</div>
 
816
<div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160;    (cudaMalloc(&amp;cuda_device_intens_, overall_size_ * <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>)));</div>
 
817
<div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160;    (cudaMemcpy(cuda_device_intens_, &amp;(cuda_intensities_[0]), overall_size_ * <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>), cudaMemcpyHostToDevice));</div>
 
818
<div class="line"><a name="l00974"></a><span class="lineno">  974</span>&#160;    (cudaMalloc(&amp;cuda_device_trans_intens_, overall_size_ * <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>)));</div>
 
819
<div class="line"><a name="l00975"></a><span class="lineno">  975</span>&#160;    (cudaMalloc(&amp;cuda_device_fwd2_, overall_size_ * <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>)));</div>
 
820
<div class="line"><a name="l00976"></a><span class="lineno">  976</span>&#160;    (cudaMalloc(&amp;cuda_device_trans_intens_sorted_, overall_size_ * <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>)));</div>
 
821
<div class="line"><a name="l00977"></a><span class="lineno">  977</span>&#160;</div>
 
822
<div class="line"><a name="l00978"></a><span class="lineno">  978</span>&#160;    c_sorted_candidate_.resize(overall_size_);</div>
 
823
<div class="line"><a name="l00979"></a><span class="lineno">  979</span>&#160;    scores_.resize(data_length_);</div>
 
824
<div class="line"><a name="l00980"></a><span class="lineno">  980</span>&#160;    zeros_.resize(overall_size_);</div>
 
825
<div class="line"><a name="l00981"></a><span class="lineno">  981</span>&#160;    memset(&amp;zeros_[0], 0., overall_size_ * <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>));</div>
 
826
<div class="line"><a name="l00982"></a><span class="lineno">  982</span>&#160;</div>
 
827
<div class="line"><a name="l00983"></a><span class="lineno">  983</span>&#160;    (cudaMalloc(&amp;cuda_device_scores_, overall_size_ * <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>)));</div>
 
828
<div class="line"><a name="l00984"></a><span class="lineno">  984</span>&#160;</div>
 
829
<div class="line"><a name="l00985"></a><span class="lineno">  985</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespaceOpenMS_1_1Constants.html#a53aae8780a5fb5cca0b69ece3f1c226c">Constants::CUDA_INIT_SUCCESS</a>;</div>
 
830
<div class="line"><a name="l00986"></a><span class="lineno">  986</span>&#160;  }</div>
 
831
<div class="line"><a name="l00987"></a><span class="lineno">  987</span>&#160;</div>
 
832
<div class="line"><a name="l00988"></a><span class="lineno">  988</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
833
<div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160;  <span class="keywordtype">void</span> IsotopeWaveletTransform&lt;PeakType&gt;::getTransformCuda(TransSpectrum&amp; c_trans, <span class="keyword">const</span> <a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a> c)</div>
 
834
<div class="line"><a name="l00990"></a><span class="lineno">  990</span>&#160;  {</div>
 
835
<div class="line"><a name="l00991"></a><span class="lineno">  991</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
836
<div class="line"><a name="l00992"></a><span class="lineno">  992</span>&#160;<span class="preprocessor"></span>    std::cout &lt;&lt; <span class="stringliteral">&quot;res in vector&quot;</span> &lt;&lt; std::endl;</div>
 
837
<div class="line"><a name="l00993"></a><span class="lineno">  993</span>&#160;    std::vector&lt;float&gt; res(overall_size_, 0);</div>
 
838
<div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160;<span class="preprocessor">#endif</span></div>
 
839
<div class="line"><a name="l00995"></a><span class="lineno">  995</span>&#160;<span class="preprocessor"></span>    (cudaMemcpy(cuda_device_trans_intens_, &amp;zeros_[0], overall_size_ * <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>), cudaMemcpyHostToDevice));</div>
 
840
<div class="line"><a name="l00996"></a><span class="lineno">  996</span>&#160;</div>
 
841
<div class="line"><a name="l00997"></a><span class="lineno">  997</span>&#160;    (cudaMemcpy(cuda_device_fwd2_, &amp;zeros_[0], overall_size_ * <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>), cudaMemcpyHostToDevice));</div>
 
842
<div class="line"><a name="l00998"></a><span class="lineno">  998</span>&#160;    <a class="code" href="namespaceOpenMS.html#aceb625a4ecfa2772148ef49e0e036da9">getExternalCudaTransforms</a>(dimGrid_, dimBlock_, (<span class="keywordtype">float</span>*)cuda_device_pos_, (<span class="keywordtype">float</span>*)cuda_device_intens_, from_max_to_left_, from_max_to_right_, (<span class="keywordtype">float</span>*)cuda_device_trans_intens_,</div>
 
843
<div class="line"><a name="l00999"></a><span class="lineno">  999</span>&#160;                              c + 1, to_load_, to_compute_, data_length_, (<span class="keywordtype">float</span>*)cuda_device_fwd2_, hr_data_);</div>
 
844
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;</div>
 
845
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;    (cudaMemcpy(cuda_device_trans_intens_sorted_, cuda_device_fwd2_, overall_size_ * <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>), cudaMemcpyDeviceToDevice));</div>
 
846
<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;</div>
 
847
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;    (cudaMemcpy(&amp;((*c_trans.trans_intens_)[0]), (<span class="keywordtype">float</span>*)cuda_device_trans_intens_ + from_max_to_left_, data_length_ * <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>), cudaMemcpyDeviceToHost));</div>
 
848
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
849
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;<span class="preprocessor"></span>    (cudaMemcpy(&amp;(res[0]), (<span class="keywordtype">float</span>*)cuda_device_trans_intens_ + from_max_to_left_, data_length_ * <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>), cudaMemcpyDeviceToHost));</div>
 
850
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a> i = 0; i &lt; data_length_; ++i)</div>
 
851
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;    {</div>
 
852
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;      c_trans.setTransIntensity(i, res[i]);</div>
 
853
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;    }</div>
 
854
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;<span class="preprocessor">#endif</span></div>
 
855
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;<span class="preprocessor"></span>  }</div>
 
856
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;</div>
 
857
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
858
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;  <span class="keywordtype">int</span> IsotopeWaveletTransform&lt;PeakType&gt;::sortCuda(MSSpectrum&lt;PeakType&gt;&amp; sorted)</div>
 
859
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;  {</div>
 
860
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;    (cudaMemcpy(cuda_device_posindices_sorted_, &amp;indices_[0], overall_size_ * <span class="keyword">sizeof</span>(<span class="keywordtype">int</span>), cudaMemcpyHostToDevice));</div>
 
861
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;    <a class="code" href="classInt.html">Int</a> gpu_index = <a class="code" href="namespaceOpenMS.html#a517b2dfc611bb3d0cc32026d3c68d344">sortOnDevice</a>((<span class="keywordtype">float</span>*)cuda_device_trans_intens_sorted_, (<span class="keywordtype">int</span>*) cuda_device_posindices_sorted_, overall_size_, 0);</div>
 
862
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;</div>
 
863
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;    <span class="keywordflow">if</span> (gpu_index &lt; 0) <span class="comment">//i.e., there is no positive intensity value at all</span></div>
 
864
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;    {</div>
 
865
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;      <span class="keywordflow">return</span> gpu_index;</div>
 
866
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;    }</div>
 
867
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;</div>
 
868
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;    (cudaMemcpy(h_data_, (<span class="keywordtype">float</span>*)cuda_device_trans_intens_sorted_ + gpu_index, <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>) * (overall_size_ - gpu_index), cudaMemcpyDeviceToHost));</div>
 
869
<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160;    (cudaMemcpy(h_pos_, (<span class="keywordtype">int</span>*)cuda_device_posindices_sorted_ + gpu_index, <span class="keyword">sizeof</span>(<span class="keywordtype">int</span>) * (overall_size_ - gpu_index), cudaMemcpyDeviceToHost));</div>
 
870
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;</div>
 
871
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a> i = 0; i &lt; (overall_size_ - gpu_index); ++i)</div>
 
872
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;    {</div>
 
873
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;      sorted[i].setIntensity(h_data_[i]);</div>
 
874
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;      sorted[i].setMZ(cuda_positions_[h_pos_[i]]);</div>
 
875
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;    }</div>
 
876
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;</div>
 
877
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;    <span class="keywordflow">return</span> gpu_index;</div>
 
878
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;  }</div>
 
879
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;</div>
 
880
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
881
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;  <span class="keywordtype">void</span> IsotopeWaveletTransform&lt;PeakType&gt;::identifyChargeCuda(<span class="keyword">const</span> TransSpectrum&amp; candidates,</div>
 
882
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;                                                             <span class="keyword">const</span> <a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a> scan_index, <span class="keyword">const</span> <a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a> c, <span class="keyword">const</span> <a class="code" href="group__Concept.html#gace75bfb1aba684e874dffee13738bd15">DoubleReal</a> ampl_cutoff, <span class="keyword">const</span> <span class="keywordtype">bool</span> check_PPMs)</div>
 
883
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;  {</div>
 
884
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160;    <span class="keyword">const</span> MSSpectrum&lt;PeakType&gt;&amp; ref(*candidates.getRefSpectrum());</div>
 
885
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;    <a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a> index, MZ_start, MZ_end;</div>
 
886
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;    <span class="keyword">typename</span> MSSpectrum&lt;PeakType&gt;::iterator iter, bound_iter;</div>
 
887
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;    <span class="keyword">typename</span> MSSpectrum&lt;PeakType&gt;::const_iterator iter_start, iter_end, iter_p, iter2, seed_iter;</div>
 
888
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;    <a class="code" href="group__Concept.html#gace75bfb1aba684e874dffee13738bd15">DoubleReal</a> mz_cutoff, seed_mz, c_av_intens = 0, c_score = 0, c_sd_intens = 0, threshold = 0, help_mz;</div>
 
889
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;</div>
 
890
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;    <a class="code" href="classInt.html">Int</a> gpu_index = sortCuda(c_sorted_candidate_), c_index;</div>
 
891
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;    <span class="keywordflow">if</span> (gpu_index &lt; 0) <span class="comment">//the transform produced non-exploitable data</span></div>
 
892
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;    {</div>
 
893
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;      <span class="keywordflow">return</span>;</div>
 
894
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;    }</div>
 
895
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;</div>
 
896
<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;    std::vector&lt;UInt&gt; processed(data_length_, 0);</div>
 
897
<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;    <span class="keywordflow">if</span> (ampl_cutoff &lt; 0)</div>
 
898
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;    {</div>
 
899
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;      threshold = 0;</div>
 
900
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;    }</div>
 
901
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;    <span class="keywordflow">else</span></div>
 
902
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;    {</div>
 
903
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;      c_av_intens = getAvIntens_(candidates);</div>
 
904
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;      c_sd_intens = getSdIntens_(candidates, c_av_intens);</div>
 
905
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;      threshold = ampl_cutoff * c_sd_intens + c_av_intens;</div>
 
906
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;    }</div>
 
907
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;</div>
 
908
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;    <a class="code" href="classInt.html">Int</a> num_of_scores = overall_size_ - gpu_index;</div>
 
909
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;</div>
 
910
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;    (cudaMemcpy(cuda_device_scores_, &amp;zeros_[0], num_of_scores * <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>), cudaMemcpyHostToDevice));</div>
 
911
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;</div>
 
912
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;    <a class="code" href="namespaceOpenMS.html#a9d73fc492754f9c984700dbd8bc9ca0b">scoreOnDevice</a>((<span class="keywordtype">int</span>*)cuda_device_posindices_sorted_, (<span class="keywordtype">float</span>*)cuda_device_trans_intens_, (<span class="keywordtype">float</span>*)cuda_device_pos_, (<span class="keywordtype">float</span>*)cuda_device_scores_,</div>
 
913
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;                  c, num_of_scores, overall_size_, max_num_peaks_per_pattern_, threshold);</div>
 
914
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;</div>
 
915
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;    (cudaMemcpy(&amp;scores_[0], cuda_device_scores_, num_of_scores * <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>), cudaMemcpyDeviceToHost));</div>
 
916
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;</div>
 
917
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;    std::vector&lt;float&gt;::iterator score_iter;</div>
 
918
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
919
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;<span class="preprocessor"></span>    std::stringstream stream;</div>
 
920
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;    stream &lt;&lt; <span class="stringliteral">&quot;sorted_gpu_&quot;</span> &lt;&lt; candidates.getRT() &lt;&lt; <span class="stringliteral">&quot;_&quot;</span> &lt;&lt; c + 1 &lt;&lt; <span class="stringliteral">&quot;.trans\0&quot;</span>;</div>
 
921
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;    std::ofstream ofile(stream.str().c_str());</div>
 
922
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;    <span class="keywordflow">for</span> (c_index = overall_size_ - gpu_index - 1, score_iter = scores_.begin() + num_of_scores - 1; c_index &gt;= 0; --c_index, --score_iter)</div>
 
923
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;    {</div>
 
924
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;      ofile &lt;&lt; c_sorted_candidate_[c_index].getMZ() &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; c_sorted_candidate_[c_index].getIntensity() &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; *score_iter &lt;&lt; std::endl;</div>
 
925
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;    }</div>
 
926
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;    ofile.close();</div>
 
927
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;<span class="preprocessor">#endif</span></div>
 
928
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;<span class="preprocessor"></span></div>
 
929
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;    <span class="keywordflow">for</span> (c_index = overall_size_ - gpu_index - 1, score_iter = scores_.begin() + num_of_scores - 1; c_index &gt;= 0; --c_index, --score_iter)</div>
 
930
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;    {</div>
 
931
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;      seed_mz = c_sorted_candidate_[c_index].getMZ();</div>
 
932
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;</div>
 
933
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;      <span class="comment">//We can replace the following two lines ...</span></div>
 
934
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;      <span class="comment">//seed_iter = ref.MZBegin(seed_mz);</span></div>
 
935
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;      <span class="comment">//index = distance(ref.begin(), seed_iter);</span></div>
 
936
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;      <span class="comment">//... with:</span></div>
 
937
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;      index = h_pos_[c_index] - from_max_to_left_;</div>
 
938
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;      seed_iter = ref.begin() + index;</div>
 
939
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;</div>
 
940
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;      <span class="keywordflow">if</span> (seed_iter == ref.end() || processed[distance(ref.begin(), seed_iter)] || index &lt;= 0)</div>
 
941
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;      {</div>
 
942
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;        <span class="keywordflow">continue</span>;</div>
 
943
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;      }</div>
 
944
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;</div>
 
945
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;      mz_cutoff = <a class="code" href="classOpenMS_1_1IsotopeWavelet.html#aa4c1055469be0ca451cdaef1514d3981">IsotopeWavelet::getMzPeakCutOffAtMonoPos</a>(seed_mz, c + 1);</div>
 
946
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;      <span class="comment">//Mark the region as processed</span></div>
 
947
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;      <span class="comment">//Do not move this further down, since we have to mark this as processed in any case,</span></div>
 
948
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;      <span class="comment">//even when score &lt;=0; otherwise we would look around the maximum&#39;s position unless</span></div>
 
949
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;      <span class="comment">//any significant point is found</span></div>
 
950
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;      iter_start = ref.MZBegin(ref.begin(), seed_mz - <a class="code" href="namespaceOpenMS_1_1Constants.html#afb04ba9e1308cbbaa20a944f0ab124af">Constants::IW_QUARTER_NEUTRON_MASS</a> / (c + 1.), seed_iter);</div>
 
951
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160;      iter_end = ref.MZEnd(seed_iter, seed_mz + mz_cutoff / (c + 1.), ref.end());</div>
 
952
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;</div>
 
953
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;      <span class="keywordflow">if</span> (iter_end == ref.end())</div>
 
954
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;      {</div>
 
955
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;        --iter_end;</div>
 
956
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;      }</div>
 
957
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;</div>
 
958
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;      MZ_start = distance(ref.begin(), iter_start);</div>
 
959
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;      MZ_end = distance(ref.begin(), iter_end);</div>
 
960
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;</div>
 
961
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160;      memset(&amp;(processed[MZ_start]), 1, <span class="keyword">sizeof</span>(<a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a>) * (MZ_end - MZ_start + 1));</div>
 
962
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;</div>
 
963
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;      c_score = *score_iter;</div>
 
964
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;</div>
 
965
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;      <span class="keywordflow">if</span> (c_score &lt;= 0 &amp;&amp; c_score != -1000)</div>
 
966
<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;      {</div>
 
967
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;        <span class="keywordflow">continue</span>;</div>
 
968
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;      }</div>
 
969
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;</div>
 
970
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;      <span class="comment">//Push the seed into its corresponding box (or create a new one, if necessary)</span></div>
 
971
<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;      <span class="comment">//Do ***NOT*** move this further down!</span></div>
 
972
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;</div>
 
973
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;      push2TmpBox_(seed_mz, scan_index, c, c_score, c_sorted_candidate_[c_index].getIntensity(), ref.getRT(), MZ_start, MZ_end);</div>
 
974
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;</div>
 
975
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;      <span class="comment">//Push neighboring peaks to compute finally a derivative over the isotope pattern envelope</span></div>
 
976
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;      help_mz = seed_mz - <a class="code" href="namespaceOpenMS_1_1Constants.html#a4045630757d161b1f4dc0d2248202fd0">Constants::IW_NEUTRON_MASS</a> / (c + 1.);</div>
 
977
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;      iter2 = candidates.MZBegin(help_mz);</div>
 
978
<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;</div>
 
979
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;      <span class="keywordflow">if</span> (iter2 == candidates.end() || iter2 == candidates.begin())</div>
 
980
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;      {</div>
 
981
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;        <span class="keywordflow">continue</span>;</div>
 
982
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;      }</div>
 
983
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;</div>
 
984
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;      <span class="keywordflow">if</span> (fabs(iter2-&gt;getMZ() - seed_mz) &gt; 0.5 * <a class="code" href="namespaceOpenMS_1_1Constants.html#a4045630757d161b1f4dc0d2248202fd0">Constants::IW_NEUTRON_MASS</a> / (c + 1.))</div>
 
985
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;      {</div>
 
986
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;        <span class="comment">//In the other case, we are too close to the peak, leading to incorrect derivatives.</span></div>
 
987
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;        <span class="keywordflow">if</span> (iter2 != candidates.end())</div>
 
988
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;        {</div>
 
989
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;          <a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a> dist = distance(candidates.begin(), iter2);</div>
 
990
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;          push2TmpBox_(iter2-&gt;getMZ(), scan_index, <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>, 0,</div>
 
991
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;                       getLinearInterpolation((iter2 - 1)-&gt;getMZ(), candidates.getTransIntensity(dist - 1), help_mz, iter2-&gt;getMZ(), candidates.getTransIntensity(dist)),</div>
 
992
<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;                       candidates.getRT(), MZ_start, MZ_end);</div>
 
993
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;        }</div>
 
994
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;      }</div>
 
995
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;</div>
 
996
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;      help_mz = seed_mz + <a class="code" href="namespaceOpenMS_1_1Constants.html#a4045630757d161b1f4dc0d2248202fd0">Constants::IW_NEUTRON_MASS</a> / (c + 1.);</div>
 
997
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;      iter2 = candidates.MZBegin(help_mz);</div>
 
998
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;</div>
 
999
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;      <span class="keywordflow">if</span> (iter2 == candidates.end() || iter2 == candidates.begin())</div>
 
1000
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;      {</div>
 
1001
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;        <span class="keywordflow">continue</span>;</div>
 
1002
<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;      }</div>
 
1003
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;</div>
 
1004
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;      <span class="keywordflow">if</span> (fabs(iter2-&gt;getMZ() - seed_mz) &gt; 0.5 * <a class="code" href="namespaceOpenMS_1_1Constants.html#a4045630757d161b1f4dc0d2248202fd0">Constants::IW_NEUTRON_MASS</a> / (c + 1.))</div>
 
1005
<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;      {</div>
 
1006
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;        <span class="comment">//In the other case, we are too close to the peak, leading to incorrect derivatives.</span></div>
 
1007
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;        <span class="keywordflow">if</span> (iter2 != candidates.end())</div>
 
1008
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;        {</div>
 
1009
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;          <a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a> dist = distance(candidates.begin(), iter2);</div>
 
1010
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;          push2TmpBox_(iter2-&gt;getMZ(), scan_index, <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>, 0,</div>
 
1011
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;                       getLinearInterpolation((iter2 - 1)-&gt;getMZ(), candidates.getTransIntensity(dist - 1), help_mz, iter2-&gt;getMZ(), candidates.getTransIntensity(dist)),</div>
 
1012
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;                       candidates.getRT(), MZ_start, MZ_end);</div>
 
1013
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;        }</div>
 
1014
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;      }</div>
 
1015
<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;    }</div>
 
1016
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;</div>
 
1017
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;    clusterSeeds_(candidates, ref, scan_index, c, check_PPMs);</div>
 
1018
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;  }</div>
 
1019
<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160;</div>
 
1020
<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160;<span class="preprocessor">#endif</span></div>
 
1021
<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;<span class="preprocessor"></span></div>
 
1022
<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;</div>
 
1023
<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
1024
<div class="line"><a name="l01180"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#ad7b38b52b1b16ca069e80ff8b8618295"> 1180</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#ad7b38b52b1b16ca069e80ff8b8618295">IsotopeWaveletTransform&lt;PeakType&gt;::identifyCharge</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; candidates,</div>
 
1025
<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;                                                         <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; ref, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> scan_index, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> c, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> ampl_cutoff, <span class="keyword">const</span> <span class="keywordtype">bool</span> check_PPMs)</div>
 
1026
<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;  {</div>
 
1027
<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;    <a class="code" href="group__Concept.html#gaf9ecec2d692138fab9167164a457cbd4">Size</a> scan_size(candidates.size());</div>
 
1028
<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;    <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1ConstRefVector.html">ConstRefVector&lt;MSSpectrum&lt;PeakType&gt;</a> &gt;::iterator iter;</div>
 
1029
<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;    <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;::const_iterator</a> iter_start, iter_end, iter_p, seed_iter, iter2;</div>
 
1030
<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> mz_cutoff, seed_mz, c_av_intens = 0, c_score = 0, c_sd_intens = 0, threshold = 0, help_mz, share, share_pos, bwd, fwd;</div>
 
1031
<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;    <a class="code" href="classunsigned_01int.html">UInt</a> MZ_start, MZ_end;</div>
 
1032
<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;</div>
 
1033
<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;    <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a> diffed(candidates);</div>
 
1034
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160;    diffed[0].setIntensity(0); diffed[scan_size - 1].setIntensity(0);</div>
 
1035
<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;</div>
 
1036
<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
1037
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;<span class="preprocessor"></span>    std::stringstream stream;</div>
 
1038
<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;    stream &lt;&lt; <span class="stringliteral">&quot;diffed_&quot;</span> &lt;&lt; ref.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a3da529bd3240fa0d7148484bbef0b9d7">getRT</a>() &lt;&lt; <span class="stringliteral">&quot;_&quot;</span> &lt;&lt; c + 1 &lt;&lt; <span class="stringliteral">&quot;.trans\0&quot;</span>;</div>
 
1039
<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;    std::ofstream ofile(stream.str().c_str());</div>
 
1040
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;<span class="preprocessor">#endif</span></div>
 
1041
<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;<span class="preprocessor"></span></div>
 
1042
<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;    <span class="keywordflow">if</span> (!hr_data_) <span class="comment">//LowRes data</span></div>
 
1043
<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;    {</div>
 
1044
<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;      <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 0; i &lt; scan_size - 2; ++i)</div>
 
1045
<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;      {</div>
 
1046
<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;        share = candidates[i + 1].getIntensity(), share_pos = candidates[i + 1].getMZ();</div>
 
1047
<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;        bwd = (share - candidates[i].getIntensity()) / (share_pos - candidates[i].getMZ());</div>
 
1048
<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;        fwd = (candidates[i + 2].getIntensity() - share) / (candidates[i + 2].getMZ() - share_pos);</div>
 
1049
<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;</div>
 
1050
<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;        <span class="keywordflow">if</span> (!(bwd &gt;= 0 &amp;&amp; fwd &lt;= 0) || share &gt; ref[i + 1].getIntensity())</div>
 
1051
<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;        {</div>
 
1052
<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;          diffed[i + 1].setIntensity(0);</div>
 
1053
<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;        }</div>
 
1054
<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160;</div>
 
1055
<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
1056
<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;<span class="preprocessor"></span>        ofile &lt;&lt; diffed[i + 1].getMZ() &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt;  diffed[i + 1].getIntensity() &lt;&lt; std::endl;</div>
 
1057
<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160;<span class="preprocessor">#endif</span></div>
 
1058
<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160;<span class="preprocessor"></span>      }</div>
 
1059
<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160;    }</div>
 
1060
<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160;    <span class="keywordflow">else</span> <span class="comment">//HighRes data</span></div>
 
1061
<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160;    {</div>
 
1062
<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;      <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 0; i &lt; scan_size - 2; ++i)</div>
 
1063
<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;      {</div>
 
1064
<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160;        share = candidates[i + 1].getIntensity(), share_pos = candidates[i + 1].getMZ();</div>
 
1065
<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;        bwd = (share - candidates[i].getIntensity()) / (share_pos - candidates[i].getMZ());</div>
 
1066
<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160;        fwd = (candidates[i + 2].getIntensity() - share) / (candidates[i + 2].getMZ() - share_pos);</div>
 
1067
<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;</div>
 
1068
<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;        <span class="keywordflow">if</span> (!(bwd &gt;= 0 &amp;&amp; fwd &lt;= 0))</div>
 
1069
<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;        {</div>
 
1070
<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;          diffed[i + 1].setIntensity(0);</div>
 
1071
<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160;        }</div>
 
1072
<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;</div>
 
1073
<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
1074
<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;<span class="preprocessor"></span>        ofile &lt;&lt; diffed[i + 1].getMZ() &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt;  diffed[i + 1].getIntensity() &lt;&lt; std::endl;</div>
 
1075
<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160;<span class="preprocessor">#endif</span></div>
 
1076
<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;<span class="preprocessor"></span>      }</div>
 
1077
<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;    }</div>
 
1078
<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
1079
<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;<span class="preprocessor"></span>    ofile.close();</div>
 
1080
<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160;<span class="preprocessor">#endif</span></div>
 
1081
<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;<span class="preprocessor"></span></div>
 
1082
<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160;    <a class="code" href="classOpenMS_1_1ConstRefVector.html">ConstRefVector&lt;MSSpectrum&lt;PeakType&gt;</a> &gt; c_sorted_candidate_(diffed.begin(), diffed.end());</div>
 
1083
<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;</div>
 
1084
<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;    <span class="comment">//Sort the transform in descending order according to the intensities present in the transform</span></div>
 
1085
<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;    c_sorted_candidate_.<a class="code" href="classOpenMS_1_1ConstRefVector.html#a93f1c9f620403aec160d98e83e125502">sortByIntensity</a>();</div>
 
1086
<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;</div>
 
1087
<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
1088
<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;<span class="preprocessor"></span>    std::stringstream stream2;</div>
 
1089
<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160;    stream2 &lt;&lt; <span class="stringliteral">&quot;sorted_cpu_&quot;</span> &lt;&lt; candidates.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a3da529bd3240fa0d7148484bbef0b9d7">getRT</a>() &lt;&lt; <span class="stringliteral">&quot;_&quot;</span> &lt;&lt; c + 1 &lt;&lt; <span class="stringliteral">&quot;.trans\0&quot;</span>;</div>
 
1090
<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;    std::ofstream ofile2(stream2.str().c_str());</div>
 
1091
<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;    <span class="keywordflow">for</span> (iter = c_sorted_candidate_.end() - 1; iter != c_sorted_candidate_.begin(); --iter)</div>
 
1092
<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;    {</div>
 
1093
<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;      ofile2 &lt;&lt; iter-&gt;getMZ() &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; iter-&gt;getIntensity() &lt;&lt; std::endl;</div>
 
1094
<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;    }</div>
 
1095
<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;    ofile2.close();</div>
 
1096
<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;<span class="preprocessor">#endif</span></div>
 
1097
<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;<span class="preprocessor"></span></div>
 
1098
<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160;    std::vector&lt;UInt&gt; processed(scan_size, 0);</div>
 
1099
<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;</div>
 
1100
<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;    <span class="keywordflow">if</span> (ampl_cutoff &lt; 0)</div>
 
1101
<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;    {</div>
 
1102
<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160;      threshold = 0;</div>
 
1103
<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160;    }</div>
 
1104
<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;    <span class="keywordflow">else</span></div>
 
1105
<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;    {</div>
 
1106
<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;      c_av_intens = getAvIntens_(candidates);</div>
 
1107
<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;      c_sd_intens = getSdIntens_(candidates, c_av_intens);</div>
 
1108
<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160;      threshold = ampl_cutoff * c_sd_intens + c_av_intens;</div>
 
1109
<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160;    }</div>
 
1110
<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;</div>
 
1111
<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160;    <span class="keywordflow">for</span> (iter = c_sorted_candidate_.end() - 1; iter != c_sorted_candidate_.begin(); --iter)</div>
 
1112
<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160;    {</div>
 
1113
<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;      <span class="keywordflow">if</span> (iter-&gt;getIntensity() &lt;= 0)</div>
 
1114
<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160;      {</div>
 
1115
<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;        <span class="keywordflow">break</span>;</div>
 
1116
<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;      }</div>
 
1117
<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;</div>
 
1118
<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;      seed_mz = iter-&gt;getMZ();</div>
 
1119
<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160;      seed_iter = ref.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a808327302a2ba3fb630ea132d32db942">MZBegin</a>(seed_mz);</div>
 
1120
<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160;</div>
 
1121
<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;      <span class="keywordflow">if</span> (seed_iter == ref.end() || processed[distance(ref.begin(), seed_iter)])</div>
 
1122
<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;      {</div>
 
1123
<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160;        <span class="keywordflow">continue</span>;</div>
 
1124
<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;      }</div>
 
1125
<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160;</div>
 
1126
<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;      mz_cutoff = <a class="code" href="classOpenMS_1_1IsotopeWavelet.html#aa4c1055469be0ca451cdaef1514d3981">IsotopeWavelet::getMzPeakCutOffAtMonoPos</a>(seed_mz, c + 1);</div>
 
1127
<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;      <span class="comment">//Mark the region as processed</span></div>
 
1128
<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;      <span class="comment">//Do not move this further down, since we have to mark this as processed in any case,</span></div>
 
1129
<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160;      <span class="comment">//even when score &lt;=0; otherwise we would look around the maximum&#39;s position unless</span></div>
 
1130
<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160;      <span class="comment">//any significant point is found</span></div>
 
1131
<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160;      iter_start = ref.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a808327302a2ba3fb630ea132d32db942">MZBegin</a>(ref.begin(), seed_mz - <a class="code" href="namespaceOpenMS_1_1Constants.html#afb04ba9e1308cbbaa20a944f0ab124af">Constants::IW_QUARTER_NEUTRON_MASS</a> / (c + 1.), seed_iter);</div>
 
1132
<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;      iter_end = ref.<a class="code" href="classOpenMS_1_1MSSpectrum.html#add06770712321b6e489bbdbcd123c888">MZEnd</a>(seed_iter, seed_mz + mz_cutoff / (c + 1.), ref.end());</div>
 
1133
<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;      <span class="keywordflow">if</span> (iter_end == ref.end())</div>
 
1134
<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;      {</div>
 
1135
<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160;        --iter_end;</div>
 
1136
<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;      }</div>
 
1137
<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;</div>
 
1138
<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;      MZ_start = distance(ref.begin(), iter_start);</div>
 
1139
<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;      MZ_end = distance(ref.begin(), iter_end);</div>
 
1140
<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;</div>
 
1141
<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;      memset(&amp;(processed[MZ_start]), 1, <span class="keyword">sizeof</span>(<a class="code" href="classunsigned_01int.html">UInt</a>) * (MZ_end - MZ_start + 1));</div>
 
1142
<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;</div>
 
1143
<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;      c_score = scoreThis_(candidates, <a class="code" href="classOpenMS_1_1IsotopeWavelet.html#a4ed32478c0f092c6507b7fa4c7539c9a">IsotopeWavelet::getNumPeakCutOff</a>(seed_mz * (c + 1.)), seed_mz, c, threshold);</div>
 
1144
<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;</div>
 
1145
<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
1146
<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;<span class="preprocessor"></span>      <span class="keywordflow">if</span> (trunc(seed_mz) == 874)</div>
 
1147
<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;        std::cout &lt;&lt; seed_mz &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; c_score &lt;&lt; std::endl;</div>
 
1148
<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;<span class="preprocessor">#endif</span></div>
 
1149
<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;<span class="preprocessor"></span></div>
 
1150
<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;      <span class="keywordflow">if</span> (c_score &lt;= 0 &amp;&amp; c_score != -1000)</div>
 
1151
<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;      {</div>
 
1152
<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;        <span class="keywordflow">continue</span>;</div>
 
1153
<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;      }</div>
 
1154
<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;</div>
 
1155
<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;      <span class="comment">//Push the seed into its corresponding box (or create a new one, if necessary)</span></div>
 
1156
<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;      <span class="comment">//Do ***NOT*** move this further down!</span></div>
 
1157
<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;      push2TmpBox_(seed_mz, scan_index, c, c_score, iter-&gt;getIntensity(), ref.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a3da529bd3240fa0d7148484bbef0b9d7">getRT</a>(), MZ_start, MZ_end);</div>
 
1158
<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;</div>
 
1159
<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160;      help_mz = seed_mz - <a class="code" href="namespaceOpenMS_1_1Constants.html#a4045630757d161b1f4dc0d2248202fd0">Constants::IW_NEUTRON_MASS</a> / (c + 1.);</div>
 
1160
<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;      iter2 = candidates.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a808327302a2ba3fb630ea132d32db942">MZBegin</a>(help_mz);</div>
 
1161
<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;      <span class="keywordflow">if</span> (iter2 == candidates.end() || iter2 == candidates.begin())</div>
 
1162
<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160;      {</div>
 
1163
<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;        <span class="keywordflow">continue</span>;</div>
 
1164
<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;      }</div>
 
1165
<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;</div>
 
1166
<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160;      <span class="keywordflow">if</span> (fabs(iter2-&gt;getMZ() - seed_mz) &gt; 0.5 * <a class="code" href="namespaceOpenMS_1_1Constants.html#a4045630757d161b1f4dc0d2248202fd0">Constants::IW_NEUTRON_MASS</a> / (c + 1.))</div>
 
1167
<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160;      {</div>
 
1168
<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;        <span class="comment">//In the other case, we are too close to the peak, leading to incorrect derivatives.</span></div>
 
1169
<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160;        <span class="keywordflow">if</span> (iter2 != candidates.end())</div>
 
1170
<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160;        {</div>
 
1171
<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160;          push2TmpBox_(iter2-&gt;getMZ(), scan_index, <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>, 0, getLinearInterpolation(iter2 - 1, help_mz, iter2), ref.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a3da529bd3240fa0d7148484bbef0b9d7">getRT</a>(), MZ_start, MZ_end);</div>
 
1172
<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160;        }</div>
 
1173
<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;      }</div>
 
1174
<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160;</div>
 
1175
<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;      help_mz = seed_mz + <a class="code" href="namespaceOpenMS_1_1Constants.html#a4045630757d161b1f4dc0d2248202fd0">Constants::IW_NEUTRON_MASS</a> / (c + 1.);</div>
 
1176
<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;      iter2 = candidates.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a808327302a2ba3fb630ea132d32db942">MZBegin</a>(help_mz);</div>
 
1177
<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;      <span class="keywordflow">if</span> (iter2 == candidates.end() || iter2 == candidates.begin())</div>
 
1178
<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;      {</div>
 
1179
<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;        <span class="keywordflow">continue</span>;</div>
 
1180
<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;      }</div>
 
1181
<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;</div>
 
1182
<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160;      <span class="keywordflow">if</span> (fabs(iter2-&gt;getMZ() - seed_mz) &gt; 0.5 * <a class="code" href="namespaceOpenMS_1_1Constants.html#a4045630757d161b1f4dc0d2248202fd0">Constants::IW_NEUTRON_MASS</a> / (c + 1.))</div>
 
1183
<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;      {</div>
 
1184
<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160;        <span class="comment">//In the other case, we are too close to the peak, leading to incorrect derivatives.</span></div>
 
1185
<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160;        <span class="keywordflow">if</span> (iter2 != candidates.end())</div>
 
1186
<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;        {</div>
 
1187
<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;          push2TmpBox_(iter2-&gt;getMZ(), scan_index, <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>, 0, getLinearInterpolation(iter2 - 1, help_mz, iter2), ref.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a3da529bd3240fa0d7148484bbef0b9d7">getRT</a>(), MZ_start, MZ_end);</div>
 
1188
<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;        }</div>
 
1189
<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;      }</div>
 
1190
<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;    }</div>
 
1191
<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160;</div>
 
1192
<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160;    clusterSeeds_(candidates, ref, scan_index, c, check_PPMs);</div>
 
1193
<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160;  }</div>
 
1194
<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160;</div>
 
1195
<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160;<span class="preprocessor">#if defined(OPENMS_HAS_TBB) &amp;&amp; defined(OPENMS_HAS_CUDA)</span></div>
 
1196
<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;<span class="preprocessor"></span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
1197
<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#ade38c945f9f72617b16d2ffeb72a27cd">IsotopeWaveletTransform&lt;PeakType&gt;::mergeFeatures</a>(<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html">IsotopeWaveletTransform&lt;PeakType&gt;</a>* later_iwt, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> RT_interleave, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> RT_votes_cutoff)</div>
 
1198
<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;  {</div>
 
1199
<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;    <span class="keyword">typename</span> std::multimap&lt;DoubleReal, Box&gt;::iterator front_iter, end_iter, best_match, help_iter;</div>
 
1200
<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;</div>
 
1201
<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;    <span class="comment">//First of all do the trivial part of the merge</span></div>
 
1202
<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;    <span class="keywordflow">for</span> (end_iter = later_iwt-&gt;<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a7c937464c726b102d04846c420349f3a">closed_boxes_</a>.begin(); end_iter != later_iwt-&gt;<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a7c937464c726b102d04846c420349f3a">closed_boxes_</a>.end(); ++end_iter)</div>
 
1203
<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;    {</div>
 
1204
<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;      closed_boxes_.insert(*end_iter);</div>
 
1205
<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160;    }</div>
 
1206
<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160;</div>
 
1207
<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;    <span class="keyword">typename</span> std::multimap&lt;DoubleReal, Box&gt;&amp; end_container(this-&gt;end_boxes_);</div>
 
1208
<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160;    <span class="keyword">typename</span> std::multimap&lt;DoubleReal, Box&gt;&amp; front_container(later_iwt-&gt;<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a56b814a538afc8e7c9f5ebc74b658208">front_boxes_</a>);</div>
 
1209
<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160;</div>
 
1210
<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
1211
<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;<span class="preprocessor"></span>    std::cout &lt;&lt; <span class="stringliteral">&quot;FontBox: &quot;</span> &lt;&lt; front_container.size() &lt;&lt; std::endl;</div>
 
1212
<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;    <span class="keywordflow">for</span> (front_iter = front_container.begin(); front_iter != front_container.end(); ++front_iter)</div>
 
1213
<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;      std::cout &lt;&lt; front_iter-&gt;first &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; front_iter-&gt;second.size() &lt;&lt; std::endl;</div>
 
1214
<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160;</div>
 
1215
<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160;    std::cout &lt;&lt; <span class="stringliteral">&quot;EndBox: &quot;</span> &lt;&lt; end_container.size() &lt;&lt; std::endl;</div>
 
1216
<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;    <span class="keywordflow">for</span> (front_iter = end_container.begin(); front_iter != end_container.end(); ++front_iter)</div>
 
1217
<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160;      std::cout &lt;&lt; front_iter-&gt;first &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; front_iter-&gt;second.size() &lt;&lt; std::endl;</div>
 
1218
<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160;<span class="preprocessor">#endif</span></div>
 
1219
<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160;<span class="preprocessor"></span></div>
 
1220
<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160;    <span class="keyword">typename</span> std::multimap&lt;UInt, BoxElement&gt;::iterator biter;</div>
 
1221
<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160;</div>
 
1222
<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160;    <a class="code" href="group__Concept.html#gace75bfb1aba684e874dffee13738bd15">DoubleReal</a> best_dist, c_dist; <a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a> <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>;</div>
 
1223
<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;    <span class="comment">//Now, try to find matching boxes for the rest</span></div>
 
1224
<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160;    <span class="keywordflow">for</span> (front_iter = front_container.begin(); front_iter != front_container.end(); )</div>
 
1225
<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160;    {</div>
 
1226
<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160;      best_match = end_container.end(); best_dist = INT_MAX;</div>
 
1227
<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160;      <span class="comment">//This is everything else than efficient, but both containers should be very small in size</span></div>
 
1228
<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160;      <span class="keywordflow">for</span> (end_iter = end_container.begin(); end_iter != end_container.end(); ++end_iter)</div>
 
1229
<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160;      {</div>
 
1230
<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160;        c = 0;</div>
 
1231
<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160;        <span class="keywordflow">for</span> (biter = front_iter-&gt;second.begin(); biter != front_iter-&gt;second.end(); ++biter)</div>
 
1232
<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;        {</div>
 
1233
<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;          c = std::max(c, biter-&gt;second.c);</div>
 
1234
<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;        }</div>
 
1235
<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;</div>
 
1236
<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
1237
<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;<span class="preprocessor"></span>        std::cout &lt;&lt; <span class="stringliteral">&quot;Trying to match: &quot;</span> &lt;&lt; end_iter-&gt;first &lt;&lt; <span class="stringliteral">&quot; to front &quot;</span> &lt;&lt;  front_iter-&gt;first &lt;&lt; std::endl;</div>
 
1238
<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;<span class="preprocessor">#endif</span></div>
 
1239
<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160;<span class="preprocessor"></span></div>
 
1240
<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160;        c_dist = fabs(end_iter-&gt;first - front_iter-&gt;first);</div>
 
1241
<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160;        <span class="keywordflow">if</span> (c_dist &lt; <a class="code" href="namespaceOpenMS_1_1Constants.html#ac5bda598608da7b58538d2383744adbe">Constants::IW_HALF_NEUTRON_MASS</a> / (c + 1.) &amp;&amp; c_dist &lt; best_dist)</div>
 
1242
<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160;        {</div>
 
1243
<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
1244
<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160;<span class="preprocessor"></span>          std::cout &lt;&lt; <span class="stringliteral">&quot;best match &quot;</span> &lt;&lt; front_iter-&gt;second.begin()-&gt;first &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; (--(end_iter-&gt;second.end()))-&gt;first &lt;&lt; std::endl;</div>
 
1245
<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;<span class="preprocessor">#endif</span></div>
 
1246
<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160;<span class="preprocessor"></span>          <span class="keywordflow">if</span> ((front_iter-&gt;second.begin()-&gt;first - (--(end_iter-&gt;second.end()))-&gt;first) &lt;= RT_interleave + 1)</div>
 
1247
<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;          {</div>
 
1248
<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160;            <span class="comment">//otherwise, there are too many blank scans in between</span></div>
 
1249
<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160;            best_match = end_iter;</div>
 
1250
<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;            best_dist = c_dist;</div>
 
1251
<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160;          }</div>
 
1252
<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;        }</div>
 
1253
<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;      }</div>
 
1254
<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160;      <span class="keywordflow">if</span> (best_match == end_container.end()) <span class="comment">//No matching pair found</span></div>
 
1255
<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;      {</div>
 
1256
<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;        <span class="keywordflow">if</span> (front_iter-&gt;second.size() &gt;= RT_votes_cutoff)</div>
 
1257
<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160;        {</div>
 
1258
<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160;          closed_boxes_.insert(*front_iter);</div>
 
1259
<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;          <span class="comment">//extendBox_ (map, front_iter-&gt;second);</span></div>
 
1260
<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160;        }</div>
 
1261
<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160;        ++front_iter;</div>
 
1262
<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;      }</div>
 
1263
<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160;      <span class="keywordflow">else</span> <span class="comment">//That&#39;s the funny part</span></div>
 
1264
<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;      {</div>
 
1265
<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
1266
<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160;<span class="preprocessor"></span>        std::cout &lt;&lt; <span class="stringliteral">&quot;Merging the boxes: &quot;</span> &lt;&lt; front_iter-&gt;first  &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; best_match-&gt;first &lt;&lt; std::endl;</div>
 
1267
<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160;<span class="preprocessor">#endif</span></div>
 
1268
<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160;<span class="preprocessor"></span></div>
 
1269
<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160;        front_iter-&gt;second.insert(best_match-&gt;second.begin(), best_match-&gt;second.end());</div>
 
1270
<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160;        Box replacement(front_iter-&gt;second);</div>
 
1271
<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160;</div>
 
1272
<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160;        <span class="comment">//We cannot divide both m/z by 2, since we already inserted some m/zs whose weight would be lowered.</span></div>
 
1273
<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;        <a class="code" href="group__Concept.html#gace75bfb1aba684e874dffee13738bd15">DoubleReal</a> c_mz = front_iter-&gt;first * (front_iter-&gt;second.size() - best_match-&gt;second.size()) + best_match-&gt;first * best_match-&gt;second.size();</div>
 
1274
<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160;        c_mz /= ((<a class="code" href="group__Concept.html#gace75bfb1aba684e874dffee13738bd15">DoubleReal</a>) (front_iter-&gt;second.size()));</div>
 
1275
<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;</div>
 
1276
<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160;        help_iter = front_iter;</div>
 
1277
<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160;        ++help_iter;</div>
 
1278
<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160;        std::pair&lt;DoubleReal, std::multimap&lt;UInt, BoxElement&gt; &gt; help3(c_mz, replacement);</div>
 
1279
<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160;        closed_boxes_.insert(help3);</div>
 
1280
<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160;        <span class="comment">//extendBox_ (map, help3.second);</span></div>
 
1281
<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;        front_container.erase(front_iter);</div>
 
1282
<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160;        end_container.erase(best_match);</div>
 
1283
<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160;        front_iter = help_iter;</div>
 
1284
<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;      }</div>
 
1285
<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160;    }</div>
 
1286
<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160;</div>
 
1287
<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;    <span class="comment">//Merge the rest in end_container</span></div>
 
1288
<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160;    <span class="keywordflow">for</span> (end_iter = end_container.begin(); end_iter != end_container.end(); ++end_iter)</div>
 
1289
<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160;    {</div>
 
1290
<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160;      <span class="keywordflow">if</span> (end_iter-&gt;second.size() &gt;= RT_votes_cutoff)</div>
 
1291
<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160;      {</div>
 
1292
<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160;        closed_boxes_.insert(*end_iter);</div>
 
1293
<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;        <span class="comment">//extendBox_ (map, end_iter-&gt;second);</span></div>
 
1294
<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160;      }</div>
 
1295
<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160;    }</div>
 
1296
<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160;  }</div>
 
1297
<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160;</div>
 
1298
<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160;<span class="preprocessor">#endif</span></div>
 
1299
<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160;<span class="preprocessor"></span></div>
 
1300
<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160;</div>
 
1301
<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
1302
<div class="line"><a name="l01458"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#aa6ef3e67df6ac4e38a3b4c26f4709078"> 1458</a></span>&#160;  <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a93b2fba796a1b0b3364ee6ce60001843">IsotopeWaveletTransform&lt;PeakType&gt;::scoreThis_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; candidate,</div>
 
1303
<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160;                                                           <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> peak_cutoff, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> seed_mz, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> c, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> ampl_cutoff)</div>
 
1304
<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160;  {</div>
 
1305
<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> c_score = 0, c_val;</div>
 
1306
<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160;    <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;::const_iterator</a> c_left_iter2, c_right_iter2;</div>
 
1307
<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160;    <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> signal_size((<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a>)candidate.size());</div>
 
1308
<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160;    <span class="comment">//in the very unlikely case that size_t will not fit to int anymore this will be a problem of course</span></div>
 
1309
<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;    <span class="comment">//for the sake of simplicity (we need here a signed int) we do not cast at every following comparison individually</span></div>
 
1310
<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;</div>
 
1311
<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;    <span class="comment">//p_h_ind indicates if we are looking for a whole or a peak</span></div>
 
1312
<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160;    <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> p_h_ind = 1, end = 4 * (peak_cutoff - 1) - 1; <span class="comment">//4 times and not 2 times, since we move by 0.5 m/z entities</span></div>
 
1313
<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;</div>
 
1314
<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;    std::vector&lt;DoubleReal&gt; positions(end);</div>
 
1315
<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> i = 0; i &lt; end; ++i)</div>
 
1316
<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;    {</div>
 
1317
<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160;      positions[i] =  seed_mz - ((peak_cutoff - 1) * <a class="code" href="namespaceOpenMS_1_1Constants.html#a4045630757d161b1f4dc0d2248202fd0">Constants::IW_NEUTRON_MASS</a> - (i + 1) * <a class="code" href="namespaceOpenMS_1_1Constants.html#ac5bda598608da7b58538d2383744adbe">Constants::IW_HALF_NEUTRON_MASS</a>) / ((<a class="code" href="classdouble.html">DoubleReal</a>)c + 1);</div>
 
1318
<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;    }</div>
 
1319
<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160;</div>
 
1320
<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> l_score = 0, mid_val = 0;</div>
 
1321
<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160;    <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> start_index = distance(candidate.begin(), candidate.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a808327302a2ba3fb630ea132d32db942">MZBegin</a>(positions[0])) - 1;</div>
 
1322
<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> v = 1; v &lt;= end; ++v, ++p_h_ind)</div>
 
1323
<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160;    {</div>
 
1324
<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160;      <span class="keywordflow">do</span></div>
 
1325
<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160;      {</div>
 
1326
<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160;        <span class="keywordflow">if</span> (start_index &lt; signal_size - 1)</div>
 
1327
<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160;          ++start_index;</div>
 
1328
<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160;        <span class="keywordflow">else</span></div>
 
1329
<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160;          <span class="keywordflow">break</span>;</div>
 
1330
<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160;      }</div>
 
1331
<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160;      <span class="keywordflow">while</span> (candidate[start_index].getMZ() &lt; positions[v - 1]);</div>
 
1332
<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160;</div>
 
1333
<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160;      <span class="keywordflow">if</span> (start_index &lt;= 0 || start_index &gt;= signal_size - 1) <span class="comment">//unable to interpolate</span></div>
 
1334
<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160;      {</div>
 
1335
<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160;        <span class="keywordflow">continue</span>;</div>
 
1336
<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160;      }</div>
 
1337
<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160;</div>
 
1338
<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160;      c_left_iter2 = candidate.begin() + start_index - 1;</div>
 
1339
<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160;      c_right_iter2 = c_left_iter2 + 1;</div>
 
1340
<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160;</div>
 
1341
<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160;      c_val = c_left_iter2-&gt;getIntensity() + (c_right_iter2-&gt;getIntensity() - c_left_iter2-&gt;getIntensity()) / (c_right_iter2-&gt;getMZ() - c_left_iter2-&gt;getMZ()) * (positions[v - 1] - c_left_iter2-&gt;getMZ());</div>
 
1342
<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160;</div>
 
1343
<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160;      <span class="keywordflow">if</span> (v == (<span class="keywordtype">int</span>)(ceil(end / 2.)))</div>
 
1344
<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160;      {</div>
 
1345
<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160;        l_score = c_score;</div>
 
1346
<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160;        mid_val = c_val;</div>
 
1347
<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160;      }</div>
 
1348
<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160;</div>
 
1349
<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160;      <span class="keywordflow">if</span> (p_h_ind % 2 == 1) <span class="comment">//I.e. a whole</span></div>
 
1350
<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160;      {</div>
 
1351
<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160;        c_score -= c_val;</div>
 
1352
<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
1353
<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160;<span class="preprocessor"></span>        <span class="keywordflow">if</span> (trunc(seed_mz) == 874)</div>
 
1354
<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160;          std::cout &lt;&lt; -c_val &lt;&lt; std::endl;</div>
 
1355
<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160;<span class="preprocessor">#endif</span></div>
 
1356
<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160;<span class="preprocessor"></span>      }</div>
 
1357
<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160;      <span class="keywordflow">else</span></div>
 
1358
<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160;      {</div>
 
1359
<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160;        c_score += c_val;</div>
 
1360
<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
1361
<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160;<span class="preprocessor"></span>        <span class="keywordflow">if</span> (trunc(seed_mz) == 874)</div>
 
1362
<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160;          std::cout &lt;&lt; c_val &lt;&lt; std::endl;</div>
 
1363
<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160;<span class="preprocessor">#endif</span></div>
 
1364
<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160;<span class="preprocessor"></span>      }</div>
 
1365
<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160;</div>
 
1366
<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160;</div>
 
1367
<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160;      start_index = distance(candidate.begin(), c_left_iter2);</div>
 
1368
<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160;    }</div>
 
1369
<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160;</div>
 
1370
<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
1371
<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160;<span class="preprocessor"></span>    std::ofstream ofile_score(<span class="stringliteral">&quot;scores.dat&quot;</span>, ios::app);</div>
 
1372
<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160;    std::ofstream ofile_check_score(<span class="stringliteral">&quot;check_scores.dat&quot;</span>, ios::app);</div>
 
1373
<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160;    ofile_score.close();</div>
 
1374
<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160;    ofile_check_score.close();</div>
 
1375
<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160;<span class="preprocessor">#endif</span></div>
 
1376
<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160;<span class="preprocessor"></span></div>
 
1377
<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
1378
<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160;<span class="preprocessor"></span>    <span class="keywordflow">if</span> (trunc(seed_mz) == 874)</div>
 
1379
<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160;      std::cout &lt;&lt; <span class="stringliteral">&quot;final_score: &quot;</span> &lt;&lt;  seed_mz &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; c_score &lt;&lt; <span class="stringliteral">&quot;\t l_score: &quot;</span> &lt;&lt; l_score &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; c_score - l_score - mid_val &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt;  c_score - mid_val &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; ampl_cutoff &lt;&lt; std::endl;</div>
 
1380
<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160;<span class="preprocessor">#endif</span></div>
 
1381
<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160;<span class="preprocessor"></span></div>
 
1382
<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160;    <span class="keywordflow">if</span> (c_score - mid_val &lt;= 0)</div>
 
1383
<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160;    {</div>
 
1384
<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160;      <span class="keywordflow">return</span> 0;</div>
 
1385
<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160;    }</div>
 
1386
<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160;</div>
 
1387
<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160;    <span class="keywordflow">if</span> (c_score - mid_val &lt;= ampl_cutoff)</div>
 
1388
<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160;    {</div>
 
1389
<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160;      <span class="keywordflow">return</span> -1000;</div>
 
1390
<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160;    }</div>
 
1391
<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160;</div>
 
1392
<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160;    <span class="keywordflow">if</span> (l_score &lt;= 0 || c_score - l_score - mid_val &lt;= 0)</div>
 
1393
<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;    {</div>
 
1394
<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160;      <span class="keywordflow">return</span> 0;</div>
 
1395
<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160;    }</div>
 
1396
<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160;</div>
 
1397
<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160;    <span class="keywordflow">return</span> c_score;</div>
 
1398
<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160;  }</div>
 
1399
<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160;</div>
 
1400
<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
1401
<div class="line"><a name="l01557"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a93b2fba796a1b0b3364ee6ce60001843"> 1557</a></span>&#160;  <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a93b2fba796a1b0b3364ee6ce60001843">IsotopeWaveletTransform&lt;PeakType&gt;::scoreThis_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html">TransSpectrum</a>&amp; candidate,</div>
 
1402
<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160;                                                           <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> peak_cutoff, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> seed_mz, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> c, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> ampl_cutoff)</div>
 
1403
<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160;  {</div>
 
1404
<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> c_score = 0, c_val;</div>
 
1405
<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160;    <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;::const_iterator</a> c_left_iter2, c_right_iter2;</div>
 
1406
<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;    <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> signal_size((<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a>)candidate.<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a9d78a687cf2a391198bb3cbc08bc06cb">size</a>());</div>
 
1407
<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160;</div>
 
1408
<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160;    <span class="comment">//p_h_ind indicates if we are looking for a whole or a peak</span></div>
 
1409
<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160;    <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> p_h_ind = 1, end = 4 * (peak_cutoff - 1) - 1; <span class="comment">//4 times and not 2 times, since we move by 0.5 m/z entities</span></div>
 
1410
<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160;</div>
 
1411
<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160;    std::vector&lt;DoubleReal&gt; positions(end);</div>
 
1412
<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> i = 0; i &lt; end; ++i)</div>
 
1413
<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160;    {</div>
 
1414
<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160;      positions[i] =  seed_mz - ((peak_cutoff - 1) * <a class="code" href="namespaceOpenMS_1_1Constants.html#a4045630757d161b1f4dc0d2248202fd0">Constants::IW_NEUTRON_MASS</a> - (i + 1) * <a class="code" href="namespaceOpenMS_1_1Constants.html#ac5bda598608da7b58538d2383744adbe">Constants::IW_HALF_NEUTRON_MASS</a>) / ((<a class="code" href="classdouble.html">DoubleReal</a>)c + 1);</div>
 
1415
<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160;    }</div>
 
1416
<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160;</div>
 
1417
<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> l_score = 0, mid_val = 0;</div>
 
1418
<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160;    <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> start_index = distance(candidate.<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#aef6a8bdc8ceaf79040c262392dae689d">begin</a>(), candidate.<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a2cf06f0f5a8cbfc86220b92424d4552b">MZBegin</a>(positions[0])) - 1;</div>
 
1419
<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> v = 1; v &lt;= end; ++v, ++p_h_ind)</div>
 
1420
<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160;    {</div>
 
1421
<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160;      <span class="keywordflow">do</span></div>
 
1422
<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160;      {</div>
 
1423
<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160;        <span class="keywordflow">if</span> (start_index &lt; signal_size - 1)</div>
 
1424
<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160;          ++start_index;</div>
 
1425
<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160;        <span class="keywordflow">else</span></div>
 
1426
<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160;          <span class="keywordflow">break</span>;</div>
 
1427
<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160;      }</div>
 
1428
<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160;      <span class="keywordflow">while</span> (candidate.<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a9c10530886aa26b8dc86fd13846907e1">getMZ</a>(start_index) &lt; positions[v - 1]);</div>
 
1429
<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160;</div>
 
1430
<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160;      <span class="keywordflow">if</span> (start_index &lt;= 0 || start_index &gt;= signal_size - 1) <span class="comment">//unable to interpolate</span></div>
 
1431
<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160;      {</div>
 
1432
<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160;        <span class="keywordflow">continue</span>;</div>
 
1433
<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160;      }</div>
 
1434
<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160;</div>
 
1435
<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160;      c_left_iter2 = candidate.<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#aef6a8bdc8ceaf79040c262392dae689d">begin</a>() + start_index - 1;</div>
 
1436
<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160;      c_right_iter2 = c_left_iter2 + 1;</div>
 
1437
<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160;</div>
 
1438
<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160;      c_val = candidate.<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a420f9a11eb02b46c5bb50b13b857ca95">getTransIntensity</a>(start_index - 1) + (candidate.<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a420f9a11eb02b46c5bb50b13b857ca95">getTransIntensity</a>(start_index) - candidate.<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a420f9a11eb02b46c5bb50b13b857ca95">getTransIntensity</a>(start_index - 1)) / (c_right_iter2-&gt;getMZ() - c_left_iter2-&gt;getMZ()) * (positions[v - 1] - c_left_iter2-&gt;getMZ());</div>
 
1439
<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160;      <span class="keywordflow">if</span> (v == (<span class="keywordtype">int</span>)(ceil(end / 2.)))</div>
 
1440
<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160;      {</div>
 
1441
<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160;        l_score = c_score;</div>
 
1442
<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160;        mid_val = c_val;</div>
 
1443
<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160;      }</div>
 
1444
<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160;</div>
 
1445
<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160;      <span class="keywordflow">if</span> (p_h_ind % 2 == 1) <span class="comment">//I.e. a whole</span></div>
 
1446
<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160;      {</div>
 
1447
<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160;        c_score -= c_val;</div>
 
1448
<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160;      }</div>
 
1449
<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160;      <span class="keywordflow">else</span></div>
 
1450
<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160;      {</div>
 
1451
<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160;        c_score += c_val;</div>
 
1452
<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160;      }</div>
 
1453
<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160;</div>
 
1454
<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160;      start_index = distance(candidate.<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#aef6a8bdc8ceaf79040c262392dae689d">begin</a>(), c_left_iter2);</div>
 
1455
<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160;    }</div>
 
1456
<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160;</div>
 
1457
<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
1458
<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160;<span class="preprocessor"></span>    std::ofstream ofile_score(<span class="stringliteral">&quot;scores.dat&quot;</span>, ios::app);</div>
 
1459
<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160;    std::ofstream ofile_check_score(<span class="stringliteral">&quot;check_scores.dat&quot;</span>, ios::app);</div>
 
1460
<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160;    ofile_score &lt;&lt; c_check_point &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; c_score &lt;&lt; std::endl;</div>
 
1461
<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160;    ofile_score.close();</div>
 
1462
<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160;    ofile_check_score.close();</div>
 
1463
<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160;<span class="preprocessor">#endif</span></div>
 
1464
<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160;<span class="preprocessor"></span></div>
 
1465
<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160;    <span class="keywordflow">if</span> (l_score &lt;= 0 || c_score - l_score - mid_val &lt;= 0 || c_score - mid_val &lt;= ampl_cutoff)</div>
 
1466
<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160;    {</div>
 
1467
<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160;      <span class="keywordflow">return</span> 0;</div>
 
1468
<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160;    }</div>
 
1469
<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160;</div>
 
1470
<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160;    <span class="keywordflow">return</span> c_score;</div>
 
1471
<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160;  }</div>
 
1472
<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160;</div>
 
1473
<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
1474
<div class="line"><a name="l01630"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a9313169cff9182464b7a63c3e37eebb2"> 1630</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#aa6e604058ed988f0f108f1d7d446cd56">IsotopeWaveletTransform&lt;PeakType&gt;::clusterSeeds_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; candidate,</div>
 
1475
<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160;                                                        <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; ref, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> scan_index, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> c, <span class="keyword">const</span> <span class="keywordtype">bool</span> check_PPMs)</div>
 
1476
<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160;  {</div>
 
1477
<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160;    <span class="keyword">typename</span> std::multimap&lt;DoubleReal, Box&gt;::iterator iter;</div>
 
1478
<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;    <span class="keyword">typename</span> Box::iterator box_iter;</div>
 
1479
<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160;    std::vector&lt;BoxElement&gt; final_box;</div>
 
1480
<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> c_mz, av_score = 0, av_mz = 0, av_intens = 0, av_abs_intens = 0, count = 0;</div>
 
1481
<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> virtual_av_mz = 0, virtual_av_intens = 0, virtual_av_abs_intens = 0, virtual_count = 0;</div>
 
1482
<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160;</div>
 
1483
<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160;    <span class="keyword">typename</span> std::pair&lt;DoubleReal, DoubleReal&gt; c_extend;</div>
 
1484
<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160;    <span class="keywordflow">for</span> (iter = tmp_boxes_-&gt;at(c).begin(); iter != tmp_boxes_-&gt;at(c).end(); ++iter)</div>
 
1485
<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160;    {</div>
 
1486
<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160;</div>
 
1487
<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160;      <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#af8b1d83064f6ef81d7a617802bab249f">Box</a>&amp; c_box = iter-&gt;second;</div>
 
1488
<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160;      av_score = 0, av_mz = 0, av_intens = 0, av_abs_intens = 0, count = 0;</div>
 
1489
<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160;      virtual_av_mz = 0, virtual_av_intens = 0, virtual_av_abs_intens = 0, virtual_count = 0;</div>
 
1490
<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160;</div>
 
1491
<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160;      <span class="comment">//Now, let&#39;s get the RT boundaries for the box</span></div>
 
1492
<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160;      <span class="keywordflow">for</span> (box_iter = c_box.begin(); box_iter != c_box.end(); ++box_iter)</div>
 
1493
<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160;      {</div>
 
1494
<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160;        <span class="keywordflow">if</span> (box_iter-&gt;second.score == 0) <span class="comment">//virtual helping point</span></div>
 
1495
<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160;        {</div>
 
1496
<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160;          <span class="keywordflow">if</span> (count != 0)</div>
 
1497
<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160;            <span class="keywordflow">continue</span>; <span class="comment">//it is in any way not pure virtual</span></div>
 
1498
<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160;</div>
 
1499
<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160;          c_mz = box_iter-&gt;second.mz;</div>
 
1500
<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160;          virtual_av_intens += box_iter-&gt;second.intens;</div>
 
1501
<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160;          virtual_av_abs_intens += fabs(box_iter-&gt;second.intens);</div>
 
1502
<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160;          virtual_av_mz += c_mz * fabs(box_iter-&gt;second.intens);</div>
 
1503
<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160;          ++virtual_count;</div>
 
1504
<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160;        }</div>
 
1505
<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160;        <span class="keywordflow">else</span></div>
 
1506
<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160;        {</div>
 
1507
<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160;          c_mz = box_iter-&gt;second.mz;</div>
 
1508
<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160;          av_score += box_iter-&gt;second.score;</div>
 
1509
<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160;          av_intens += box_iter-&gt;second.intens;</div>
 
1510
<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160;          av_abs_intens += fabs(box_iter-&gt;second.intens);</div>
 
1511
<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160;          av_mz += c_mz * fabs(box_iter-&gt;second.intens);</div>
 
1512
<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160;          ++count;</div>
 
1513
<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160;        }</div>
 
1514
<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160;      }</div>
 
1515
<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160;</div>
 
1516
<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160;      <span class="keywordflow">if</span> (count == 0) <span class="comment">//pure virtual helping box</span></div>
 
1517
<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160;      {</div>
 
1518
<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160;        av_intens = virtual_av_intens / virtual_count;</div>
 
1519
<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160;        av_score = 0;</div>
 
1520
<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160;        av_mz = virtual_av_mz / virtual_av_abs_intens;</div>
 
1521
<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160;      }</div>
 
1522
<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160;      <span class="keywordflow">else</span></div>
 
1523
<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160;      {</div>
 
1524
<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160;        av_intens /= count;</div>
 
1525
<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160;        av_score /= count;</div>
 
1526
<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160;        av_mz /= av_abs_intens;</div>
 
1527
<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160;      }</div>
 
1528
<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160;</div>
 
1529
<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160;      <a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html">BoxElement</a> c_box_element;</div>
 
1530
<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160;      c_box_element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#ae7800b5f37aa029e53c6776f1952cdc7">mz</a> = av_mz;</div>
 
1531
<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160;      c_box_element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#a6d47e4bb5a579f9dd390c2a4f07a3cd3">c</a> = <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>;</div>
 
1532
<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160;      c_box_element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#aa2ac7da25c2023e7cf03863e5b907fd9">score</a> = av_score;</div>
 
1533
<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160;      c_box_element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#a991a665a859b92931ef2ddccea7d98c5">intens</a> = av_intens;</div>
 
1534
<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160;</div>
 
1535
<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160;      c_box_element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#afc4478a0397a76fef003746ff45fc201">RT</a> = c_box.begin()-&gt;second.RT;</div>
 
1536
<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160;      final_box.push_back(c_box_element);</div>
 
1537
<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160;    }</div>
 
1538
<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160;</div>
 
1539
<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160;    <a class="code" href="group__Concept.html#gaf9ecec2d692138fab9167164a457cbd4">Size</a> num_o_feature = final_box.size();</div>
 
1540
<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160;    <span class="keywordflow">if</span> (num_o_feature == 0)</div>
 
1541
<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160;    {</div>
 
1542
<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160;      tmp_boxes_-&gt;at(c).clear();</div>
 
1543
<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160;      <span class="keywordflow">return</span>;</div>
 
1544
<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160;    }</div>
 
1545
<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160;</div>
 
1546
<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160;    <span class="comment">//Computing the derivatives</span></div>
 
1547
<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160;    std::vector&lt;DoubleReal&gt; bwd_diffs(num_o_feature, 0);</div>
 
1548
<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160;</div>
 
1549
<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160;    bwd_diffs[0] = 0;</div>
 
1550
<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaf9ecec2d692138fab9167164a457cbd4">Size</a> i = 1; i &lt; num_o_feature; ++i)</div>
 
1551
<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160;    {</div>
 
1552
<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160;      bwd_diffs[i] = (final_box[i].intens - final_box[i - 1].intens) / (final_box[i].mz - final_box[i - 1].mz);</div>
 
1553
<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160;    }</div>
 
1554
<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160;</div>
 
1555
<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
1556
<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160;<span class="preprocessor"></span>    std::ofstream ofile_bwd(<span class="stringliteral">&quot;bwd_cpu.dat&quot;</span>);</div>
 
1557
<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaf9ecec2d692138fab9167164a457cbd4">Size</a> i = 0; i &lt; num_o_feature; ++i)</div>
 
1558
<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160;    {</div>
 
1559
<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160;      ofile_bwd &lt;&lt; final_box[i].mz &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; bwd_diffs[i] &lt;&lt; std::endl;</div>
 
1560
<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160;    }</div>
 
1561
<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160;    ofile_bwd.close();</div>
 
1562
<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160;<span class="preprocessor">#endif</span></div>
 
1563
<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160;<span class="preprocessor"></span></div>
 
1564
<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160;</div>
 
1565
<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaf9ecec2d692138fab9167164a457cbd4">Size</a> i = 0; i &lt; num_o_feature - 1; ++i)</div>
 
1566
<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160;    {</div>
 
1567
<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160;      <span class="keywordflow">while</span> (i &lt; num_o_feature - 2)</div>
 
1568
<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160;      {</div>
 
1569
<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160;        <span class="keywordflow">if</span> (final_box[i].score &gt; 0 || final_box[i].score == -1000) <span class="comment">//this has been an helping point</span></div>
 
1570
<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160;          <span class="keywordflow">break</span>;</div>
 
1571
<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160;        ++i;</div>
 
1572
<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160;      }</div>
 
1573
<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160;</div>
 
1574
<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160;      <span class="keywordflow">if</span> (bwd_diffs[i] &gt; 0 &amp;&amp; bwd_diffs[i + 1] &lt; 0)</div>
 
1575
<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160;      {</div>
 
1576
<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160;        checkPositionForPlausibility_(candidate, ref, final_box[i].mz, final_box[i].c, scan_index, check_PPMs, final_box[i].intens, final_box[i].score);</div>
 
1577
<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160;        <span class="keywordflow">continue</span>;</div>
 
1578
<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160;      }</div>
 
1579
<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160;    }</div>
 
1580
<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160;</div>
 
1581
<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160;    tmp_boxes_-&gt;at(c).clear();</div>
 
1582
<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160;  }</div>
 
1583
<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160;</div>
 
1584
<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
1585
<div class="line"><a name="l01741"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#ae8d2aaf51f3673a1cb64737282dbc805"> 1741</a></span>&#160;  <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a14e9251e18d91334c130cace0ce242b2">IsotopeWaveletTransform&lt;PeakType&gt;::getAvIntens_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; scan)</div>
 
1586
<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160;  {</div>
 
1587
<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> av_intens = 0;</div>
 
1588
<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 0; i &lt; scan.size(); ++i)</div>
 
1589
<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160;    {</div>
 
1590
<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160;      <span class="keywordflow">if</span> (scan[i].getIntensity() &gt;= 0)</div>
 
1591
<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160;      {</div>
 
1592
<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160;        av_intens += scan[i].getIntensity();</div>
 
1593
<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160;      }</div>
 
1594
<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160;    }</div>
 
1595
<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160;    <span class="keywordflow">return</span> av_intens / (<a class="code" href="classdouble.html">double</a>)scan.size();</div>
 
1596
<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160;  }</div>
 
1597
<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160;</div>
 
1598
<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
1599
<div class="line"><a name="l01755"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#ae1cf00e64f27fea54399c0dbe5290151"> 1755</a></span>&#160;  <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a6ffadd9173c3cabd40cae7de8c119c69">IsotopeWaveletTransform&lt;PeakType&gt;::getSdIntens_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; scan, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="group__MathFunctionsStatistics.html#ga3b4f6f94ad2e4cc1c10753b5f84679c2">mean</a>)</div>
 
1600
<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160;  {</div>
 
1601
<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> res = 0, intens;</div>
 
1602
<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 0; i &lt; scan.size(); ++i)</div>
 
1603
<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160;    {</div>
 
1604
<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160;      <span class="keywordflow">if</span> (scan[i].getIntensity() &gt;= 0)</div>
 
1605
<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160;      {</div>
 
1606
<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160;        intens = scan[i].getIntensity();</div>
 
1607
<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160;        res += (intens - <a class="code" href="group__MathFunctionsStatistics.html#ga3b4f6f94ad2e4cc1c10753b5f84679c2">mean</a>) * (intens - mean);</div>
 
1608
<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160;      }</div>
 
1609
<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160;    }</div>
 
1610
<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160;    <span class="keywordflow">return</span> sqrt(res / (<span class="keywordtype">double</span>)(scan.size() - 1));</div>
 
1611
<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160;  }</div>
 
1612
<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160;</div>
 
1613
<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
1614
<div class="line"><a name="l01770"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a293f7531cb47810311806f4aca65628f"> 1770</a></span>&#160;  <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a293f7531cb47810311806f4aca65628f">IsotopeWaveletTransform&lt;PeakType&gt;::getAvMZSpacing_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; scan) <span class="comment">//, Int start_index, Int end_index)</span></div>
 
1615
<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160;  {</div>
 
1616
<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160;    std::vector&lt;DoubleReal&gt; diffs(scan.size() - 1, 0);</div>
 
1617
<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 0; i &lt; scan.size() - 1; ++i)</div>
 
1618
<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160;    {</div>
 
1619
<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160;      diffs[i] = scan[i + 1].getMZ() - scan[i].getMZ();</div>
 
1620
<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160;    }</div>
 
1621
<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160;</div>
 
1622
<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160;    sort(diffs.begin(), diffs.end());</div>
 
1623
<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> av_MZ_spacing = 0;</div>
 
1624
<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 0; i &lt; diffs.size() / 2; ++i)</div>
 
1625
<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160;    {</div>
 
1626
<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160;      av_MZ_spacing += diffs[i];</div>
 
1627
<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160;    }</div>
 
1628
<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160;</div>
 
1629
<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160;    <span class="keywordflow">return</span> av_MZ_spacing / (diffs.size() / 2);</div>
 
1630
<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160;  }</div>
 
1631
<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160;</div>
 
1632
<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
1633
<div class="line"><a name="l01789"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a14e9251e18d91334c130cace0ce242b2"> 1789</a></span>&#160;  <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a14e9251e18d91334c130cace0ce242b2">IsotopeWaveletTransform&lt;PeakType&gt;::getAvIntens_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html">TransSpectrum</a>&amp; scan)</div>
 
1634
<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160;  {</div>
 
1635
<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> av_intens = 0;</div>
 
1636
<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 0; i &lt; scan.<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a9d78a687cf2a391198bb3cbc08bc06cb">size</a>(); ++i)</div>
 
1637
<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160;    {</div>
 
1638
<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160;      <span class="keywordflow">if</span> (scan.<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a420f9a11eb02b46c5bb50b13b857ca95">getTransIntensity</a>(i) &gt;= 0)</div>
 
1639
<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160;      {</div>
 
1640
<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160;        av_intens += scan.<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a420f9a11eb02b46c5bb50b13b857ca95">getTransIntensity</a>(i);</div>
 
1641
<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160;      }</div>
 
1642
<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160;    }</div>
 
1643
<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160;    <span class="keywordflow">return</span> av_intens / (<a class="code" href="classdouble.html">double</a>)scan.<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a9d78a687cf2a391198bb3cbc08bc06cb">size</a>();</div>
 
1644
<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160;  }</div>
 
1645
<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160;</div>
 
1646
<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
1647
<div class="line"><a name="l01803"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a6ffadd9173c3cabd40cae7de8c119c69"> 1803</a></span>&#160;  <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a6ffadd9173c3cabd40cae7de8c119c69">IsotopeWaveletTransform&lt;PeakType&gt;::getSdIntens_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html">TransSpectrum</a>&amp; scan, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="group__MathFunctionsStatistics.html#ga3b4f6f94ad2e4cc1c10753b5f84679c2">mean</a>)</div>
 
1648
<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160;  {</div>
 
1649
<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> res = 0, intens;</div>
 
1650
<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 0; i &lt; scan.<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a9d78a687cf2a391198bb3cbc08bc06cb">size</a>(); ++i)</div>
 
1651
<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160;    {</div>
 
1652
<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160;      <span class="keywordflow">if</span> (scan.<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a420f9a11eb02b46c5bb50b13b857ca95">getTransIntensity</a>(i) &gt;= 0)</div>
 
1653
<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160;      {</div>
 
1654
<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160;        intens = scan.<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a420f9a11eb02b46c5bb50b13b857ca95">getTransIntensity</a>(i);</div>
 
1655
<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160;        res += (intens - <a class="code" href="group__MathFunctionsStatistics.html#ga3b4f6f94ad2e4cc1c10753b5f84679c2">mean</a>) * (intens - mean);</div>
 
1656
<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160;      }</div>
 
1657
<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160;    }</div>
 
1658
<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160;    <span class="keywordflow">return</span> sqrt(res / (<span class="keywordtype">double</span>)(scan.<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a9d78a687cf2a391198bb3cbc08bc06cb">size</a>() - 1));</div>
 
1659
<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160;  }</div>
 
1660
<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160;</div>
 
1661
<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
1662
<div class="line"><a name="l01818"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#abe3442014d1b490291efebca5d69bf6d"> 1818</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#abe3442014d1b490291efebca5d69bf6d">IsotopeWaveletTransform&lt;PeakType&gt;::push2Box_</a>(<span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> mz, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> scan, <a class="code" href="classunsigned_01int.html">UInt</a> c,</div>
 
1663
<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160;                                                    <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> score, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> intens, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> rt, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> MZ_begin, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> MZ_end, <a class="code" href="classdouble.html">DoubleReal</a> ref_intens)</div>
 
1664
<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160;  {</div>
 
1665
<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160;    <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> dist_constraint(<a class="code" href="namespaceOpenMS_1_1Constants.html#ac5bda598608da7b58538d2383744adbe">Constants::IW_HALF_NEUTRON_MASS</a> / (<a class="code" href="classdouble.html">DoubleReal</a>)max_charge_);</div>
 
1666
<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160;</div>
 
1667
<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160;    <span class="keyword">typename</span> std::multimap&lt;DoubleReal, Box&gt;::iterator upper_iter(open_boxes_.upper_bound(mz));</div>
 
1668
<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160;    <span class="keyword">typename</span> std::multimap&lt;DoubleReal, Box&gt;::iterator lower_iter(open_boxes_.lower_bound(mz));</div>
 
1669
<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160;</div>
 
1670
<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160;    <span class="keywordflow">if</span> (lower_iter != open_boxes_.end())</div>
 
1671
<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160;    {</div>
 
1672
<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160;      <span class="comment">//Ugly, but necessary due to the implementation of STL lower_bound</span></div>
 
1673
<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160;      <span class="keywordflow">if</span> (mz != lower_iter-&gt;first &amp;&amp; lower_iter != open_boxes_.begin())</div>
 
1674
<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160;      {</div>
 
1675
<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160;        --lower_iter;</div>
 
1676
<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160;      }</div>
 
1677
<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160;    }</div>
 
1678
<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160;</div>
 
1679
<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160;    <span class="keyword">typename</span> std::multimap&lt;DoubleReal, Box&gt;::iterator insert_iter;</div>
 
1680
<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160;    <span class="keywordtype">bool</span> create_new_box = <span class="keyword">true</span>;</div>
 
1681
<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160;    <span class="keywordflow">if</span> (lower_iter == open_boxes_.end()) <span class="comment">//I.e. there is no open Box for that mz position</span></div>
 
1682
<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160;    {</div>
 
1683
<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160;      <span class="comment">//There is another special case to be considered here:</span></div>
 
1684
<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160;      <span class="comment">//Assume that the current box contains only a single element that is (slightly) smaller than the new mz value,</span></div>
 
1685
<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160;      <span class="comment">//then the lower bound for the new mz value is box.end and this would usually force a new entry</span></div>
 
1686
<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160;      <span class="keywordflow">if</span> (!open_boxes_.empty())</div>
 
1687
<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160;      {</div>
 
1688
<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160;        <span class="keywordflow">if</span> (fabs((--lower_iter)-&gt;first - mz) &lt; dist_constraint) <span class="comment">//matching box</span></div>
 
1689
<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160;        {</div>
 
1690
<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160;          create_new_box = <span class="keyword">false</span>;</div>
 
1691
<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160;          insert_iter = lower_iter;</div>
 
1692
<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160;        }</div>
 
1693
<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160;      }</div>
 
1694
<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160;      <span class="keywordflow">else</span></div>
 
1695
<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160;      {</div>
 
1696
<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160;        create_new_box = <span class="keyword">true</span>;</div>
 
1697
<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160;      }</div>
 
1698
<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160;    }</div>
 
1699
<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160;    <span class="keywordflow">else</span></div>
 
1700
<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160;    {</div>
 
1701
<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160;      <span class="keywordflow">if</span> (upper_iter == open_boxes_.end() &amp;&amp; fabs(lower_iter-&gt;first - mz) &lt; dist_constraint) <span class="comment">//Found matching Box</span></div>
 
1702
<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160;      {</div>
 
1703
<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160;        insert_iter = lower_iter;</div>
 
1704
<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160;        create_new_box = <span class="keyword">false</span>;</div>
 
1705
<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160;      }</div>
 
1706
<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160;      <span class="keywordflow">else</span></div>
 
1707
<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160;      {</div>
 
1708
<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160;        create_new_box = <span class="keyword">true</span>;</div>
 
1709
<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160;      }</div>
 
1710
<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160;    }</div>
 
1711
<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160;</div>
 
1712
<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160;</div>
 
1713
<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160;    <span class="keywordflow">if</span> (upper_iter != open_boxes_.end() &amp;&amp; lower_iter != open_boxes_.end())</div>
 
1714
<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160;    {</div>
 
1715
<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160;      <span class="comment">//Here is the question if you should figure out the smallest charge .... and then</span></div>
 
1716
<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160;</div>
 
1717
<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160;      <span class="comment">//Figure out which entry is closer to m/z</span></div>
 
1718
<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160;      <a class="code" href="classdouble.html">DoubleReal</a> dist_lower = fabs(lower_iter-&gt;first - mz);</div>
 
1719
<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160;      <a class="code" href="classdouble.html">DoubleReal</a> dist_upper = fabs(upper_iter-&gt;first - mz);</div>
 
1720
<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160;      dist_lower = (dist_lower &lt; dist_constraint) ? dist_lower : INT_MAX;</div>
 
1721
<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160;      dist_upper = (dist_upper &lt; dist_constraint) ? dist_upper : INT_MAX;</div>
 
1722
<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160;</div>
 
1723
<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160;      <span class="keywordflow">if</span> (dist_lower &gt;= dist_constraint &amp;&amp; dist_upper &gt;= dist_constraint) <span class="comment">// they are both too far away</span></div>
 
1724
<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160;      {</div>
 
1725
<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160;        create_new_box = <span class="keyword">true</span>;</div>
 
1726
<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160;      }</div>
 
1727
<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160;      <span class="keywordflow">else</span></div>
 
1728
<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160;      {</div>
 
1729
<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160;        insert_iter = (dist_lower &lt; dist_upper) ? lower_iter : upper_iter;</div>
 
1730
<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160;        create_new_box = <span class="keyword">false</span>;</div>
 
1731
<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160;      }</div>
 
1732
<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160;    }</div>
 
1733
<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160;</div>
 
1734
<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160;    <a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html">BoxElement</a> element;</div>
 
1735
<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160;    element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#a6d47e4bb5a579f9dd390c2a4f07a3cd3">c</a> = <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>; element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#ae7800b5f37aa029e53c6776f1952cdc7">mz</a> = mz; element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#aa2ac7da25c2023e7cf03863e5b907fd9">score</a> = score; element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#afc4478a0397a76fef003746ff45fc201">RT</a> = rt; element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#a991a665a859b92931ef2ddccea7d98c5">intens</a> = intens; element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#a62e26b2bd8e4c4038f96c14cae131978">ref_intens</a> = ref_intens;</div>
 
1736
<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160;    element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#aba2639fbb6538864cefddd4d6c8ef417">RT_index</a> = scan; element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#a56fc2ba583e2d06588d25e53007aa0ea">MZ_begin</a> = MZ_begin; element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#ad5ef9efd3868aea52362ff6823edf99a">MZ_end</a> = MZ_end;</div>
 
1737
<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160;</div>
 
1738
<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160;</div>
 
1739
<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160;    <span class="keywordflow">if</span> (create_new_box == <span class="keyword">false</span>)</div>
 
1740
<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160;    {</div>
 
1741
<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160;      std::pair&lt;UInt, BoxElement&gt; help2(scan, element);</div>
 
1742
<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160;      insert_iter-&gt;second.insert(help2);</div>
 
1743
<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160;</div>
 
1744
<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160;      <span class="comment">//Unfortunately, we need to change the m/z key to the average of all keys inserted in that box.</span></div>
 
1745
<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160;      <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#af8b1d83064f6ef81d7a617802bab249f">Box</a> replacement(insert_iter-&gt;second);</div>
 
1746
<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160;</div>
 
1747
<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160;      <span class="comment">//We cannot divide both m/z by 2, since we already inserted some m/zs whose weight would be lowered.</span></div>
 
1748
<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160;      <span class="comment">//Also note that we already inserted the new entry, leading to size-1.</span></div>
 
1749
<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160;      <a class="code" href="classdouble.html">DoubleReal</a> c_mz = insert_iter-&gt;first * (insert_iter-&gt;second.size() - 1) + mz;</div>
 
1750
<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160;      c_mz /= ((<a class="code" href="group__Concept.html#gace75bfb1aba684e874dffee13738bd15">DoubleReal</a>) insert_iter-&gt;second.size());</div>
 
1751
<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160;</div>
 
1752
<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160;      <span class="comment">//Now let&#39;s remove the old and insert the new one</span></div>
 
1753
<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160;      open_boxes_.erase(insert_iter);</div>
 
1754
<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160;      std::pair&lt;DoubleReal, std::multimap&lt;UInt, BoxElement&gt; &gt; help3(c_mz, replacement);</div>
 
1755
<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160;      open_boxes_.insert(help3);</div>
 
1756
<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160;    }</div>
 
1757
<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160;    <span class="keywordflow">else</span></div>
 
1758
<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160;    {</div>
 
1759
<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160;      std::pair&lt;UInt, BoxElement&gt; help2(scan, element);</div>
 
1760
<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160;      std::multimap&lt;UInt, BoxElement&gt; help3;</div>
 
1761
<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160;      help3.insert(help2);</div>
 
1762
<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160;      std::pair&lt;DoubleReal, std::multimap&lt;UInt, BoxElement&gt; &gt; help4(mz, help3);</div>
 
1763
<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160;      open_boxes_.insert(help4);</div>
 
1764
<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160;    }</div>
 
1765
<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160;  }</div>
 
1766
<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160;</div>
 
1767
<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
1768
<div class="line"><a name="l01924"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a6780beba67ab81def140c83860050719"> 1924</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a6780beba67ab81def140c83860050719">IsotopeWaveletTransform&lt;PeakType&gt;::push2TmpBox_</a>(<span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> mz, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> scan, <a class="code" href="classunsigned_01int.html">UInt</a> c,</div>
 
1769
<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160;                                                       <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> score, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> intens, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> rt, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> MZ_begin, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> MZ_end)</div>
 
1770
<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160;  {</div>
 
1771
<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160;    <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> dist_constraint(<a class="code" href="namespaceOpenMS_1_1Constants.html#ac5bda598608da7b58538d2383744adbe">Constants::IW_HALF_NEUTRON_MASS</a> / (<a class="code" href="classdouble.html">DoubleReal</a>)max_charge_);</div>
 
1772
<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160;</div>
 
1773
<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160;    std::multimap&lt;DoubleReal, Box&gt;&amp; tmp_box(tmp_boxes_-&gt;at(c));</div>
 
1774
<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160;    <span class="keyword">typename</span> std::multimap&lt;DoubleReal, Box&gt;::iterator upper_iter(tmp_box.upper_bound(mz));</div>
 
1775
<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160;    <span class="keyword">typename</span> std::multimap&lt;DoubleReal, Box&gt;::iterator lower_iter(tmp_box.lower_bound(mz));</div>
 
1776
<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160;</div>
 
1777
<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160;    <span class="keywordflow">if</span> (lower_iter != tmp_box.end())</div>
 
1778
<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160;    {</div>
 
1779
<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160;      <span class="comment">//Ugly, but necessary due to the implementation of STL lower_bound</span></div>
 
1780
<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160;      <span class="keywordflow">if</span> (mz != lower_iter-&gt;first &amp;&amp; lower_iter != tmp_box.begin())</div>
 
1781
<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160;      {</div>
 
1782
<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160;        --lower_iter;</div>
 
1783
<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160;      }</div>
 
1784
<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160;    }</div>
 
1785
<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160;</div>
 
1786
<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160;    <span class="keyword">typename</span> std::multimap&lt;DoubleReal, Box&gt;::iterator insert_iter;</div>
 
1787
<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160;    <span class="keywordtype">bool</span> create_new_box = <span class="keyword">true</span>;</div>
 
1788
<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160;    <span class="keywordflow">if</span> (lower_iter == tmp_box.end()) <span class="comment">//I.e. there is no tmp Box for that mz position</span></div>
 
1789
<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160;    {</div>
 
1790
<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160;      <span class="comment">//There is another special case to be considered here:</span></div>
 
1791
<div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160;      <span class="comment">//Assume that the current box contains only a single element that is (slightly) smaller than the new mz value,</span></div>
 
1792
<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160;      <span class="comment">//then the lower bound for the new mz value is box.end and this would usually force a new entry</span></div>
 
1793
<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160;      <span class="keywordflow">if</span> (!tmp_box.empty())</div>
 
1794
<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160;      {</div>
 
1795
<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160;        <span class="keywordflow">if</span> (fabs((--lower_iter)-&gt;first - mz) &lt; dist_constraint) <span class="comment">//matching box</span></div>
 
1796
<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160;        {</div>
 
1797
<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160;          create_new_box = <span class="keyword">false</span>;</div>
 
1798
<div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160;          insert_iter = lower_iter;</div>
 
1799
<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160;        }</div>
 
1800
<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160;      }</div>
 
1801
<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160;      <span class="keywordflow">else</span></div>
 
1802
<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160;      {</div>
 
1803
<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160;        create_new_box = <span class="keyword">true</span>;</div>
 
1804
<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160;      }</div>
 
1805
<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160;    }</div>
 
1806
<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160;    <span class="keywordflow">else</span></div>
 
1807
<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160;    {</div>
 
1808
<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160;      <span class="keywordflow">if</span> (upper_iter == tmp_box.end() &amp;&amp; fabs(lower_iter-&gt;first - mz) &lt; dist_constraint) <span class="comment">//Found matching Box</span></div>
 
1809
<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160;      {</div>
 
1810
<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160;        insert_iter = lower_iter;</div>
 
1811
<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160;        create_new_box = <span class="keyword">false</span>;</div>
 
1812
<div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160;      }</div>
 
1813
<div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160;      <span class="keywordflow">else</span></div>
 
1814
<div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160;      {</div>
 
1815
<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160;        create_new_box = <span class="keyword">true</span>;</div>
 
1816
<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160;      }</div>
 
1817
<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160;    }</div>
 
1818
<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160;</div>
 
1819
<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160;</div>
 
1820
<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160;    <span class="keywordflow">if</span> (upper_iter != tmp_box.end() &amp;&amp; lower_iter != tmp_box.end())</div>
 
1821
<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160;    {</div>
 
1822
<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160;      <span class="comment">//Figure out which entry is closer to m/z</span></div>
 
1823
<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160;      <a class="code" href="classdouble.html">DoubleReal</a> dist_lower = fabs(lower_iter-&gt;first - mz);</div>
 
1824
<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160;      <a class="code" href="classdouble.html">DoubleReal</a> dist_upper = fabs(upper_iter-&gt;first - mz);</div>
 
1825
<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160;      dist_lower = (dist_lower &lt; dist_constraint) ? dist_lower : INT_MAX;</div>
 
1826
<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160;      dist_upper = (dist_upper &lt; dist_constraint) ? dist_upper : INT_MAX;</div>
 
1827
<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160;</div>
 
1828
<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160;      <span class="keywordflow">if</span> (dist_lower &gt;= dist_constraint &amp;&amp; dist_upper &gt;= dist_constraint) <span class="comment">// they are both too far away</span></div>
 
1829
<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160;      {</div>
 
1830
<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160;        create_new_box = <span class="keyword">true</span>;</div>
 
1831
<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160;      }</div>
 
1832
<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160;      <span class="keywordflow">else</span></div>
 
1833
<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160;      {</div>
 
1834
<div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160;        insert_iter = (dist_lower &lt; dist_upper) ? lower_iter : upper_iter;</div>
 
1835
<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160;        create_new_box = <span class="keyword">false</span>;</div>
 
1836
<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160;      }</div>
 
1837
<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160;    }</div>
 
1838
<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160;</div>
 
1839
<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160;    <a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html">BoxElement</a> element;</div>
 
1840
<div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160;    element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#a6d47e4bb5a579f9dd390c2a4f07a3cd3">c</a> = <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>; element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#ae7800b5f37aa029e53c6776f1952cdc7">mz</a> = mz; element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#aa2ac7da25c2023e7cf03863e5b907fd9">score</a> = score; element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#afc4478a0397a76fef003746ff45fc201">RT</a> = rt; element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#a991a665a859b92931ef2ddccea7d98c5">intens</a> = intens; element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#a62e26b2bd8e4c4038f96c14cae131978">ref_intens</a> = -1000;</div>
 
1841
<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160;    element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#aba2639fbb6538864cefddd4d6c8ef417">RT_index</a> = scan; element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#a56fc2ba583e2d06588d25e53007aa0ea">MZ_begin</a> = MZ_begin; element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#ad5ef9efd3868aea52362ff6823edf99a">MZ_end</a> = MZ_end;</div>
 
1842
<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160;</div>
 
1843
<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160;    <span class="keywordflow">if</span> (create_new_box == <span class="keyword">false</span>)</div>
 
1844
<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160;    {</div>
 
1845
<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160;      std::pair&lt;UInt, BoxElement&gt; help2(scan, element);</div>
 
1846
<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160;      insert_iter-&gt;second.insert(help2);</div>
 
1847
<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160;</div>
 
1848
<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160;      <span class="comment">//Unfortunately, we need to change the m/z key to the average of all keys inserted in that box.</span></div>
 
1849
<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160;      <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#af8b1d83064f6ef81d7a617802bab249f">Box</a> replacement(insert_iter-&gt;second);</div>
 
1850
<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160;</div>
 
1851
<div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160;      <span class="comment">//We cannot divide both m/z by 2, since we already inserted some m/zs whose weight would be lowered.</span></div>
 
1852
<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160;      <span class="comment">//Also note that we already inserted the new entry, leading to size-1.</span></div>
 
1853
<div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160;      <a class="code" href="classdouble.html">DoubleReal</a> c_mz = insert_iter-&gt;first * (insert_iter-&gt;second.size() - 1) + mz;</div>
 
1854
<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160;      c_mz /= ((<a class="code" href="group__Concept.html#gace75bfb1aba684e874dffee13738bd15">DoubleReal</a>) insert_iter-&gt;second.size());</div>
 
1855
<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160;</div>
 
1856
<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160;      <span class="comment">//Now let&#39;s remove the old and insert the new one</span></div>
 
1857
<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160;      tmp_box.erase(insert_iter);</div>
 
1858
<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160;      std::pair&lt;DoubleReal, std::multimap&lt;UInt, BoxElement&gt; &gt; help3(c_mz, replacement);</div>
 
1859
<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160;      tmp_box.insert(help3);</div>
 
1860
<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160;    }</div>
 
1861
<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160;    <span class="keywordflow">else</span></div>
 
1862
<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160;    {</div>
 
1863
<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160;      std::pair&lt;UInt, BoxElement&gt; help2(scan, element);</div>
 
1864
<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160;      std::multimap&lt;UInt, BoxElement&gt; help3;</div>
 
1865
<div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160;      help3.insert(help2);</div>
 
1866
<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160;</div>
 
1867
<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>&#160;      std::pair&lt;DoubleReal, std::multimap&lt;UInt, BoxElement&gt; &gt; help4(mz, help3);</div>
 
1868
<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160;      tmp_box.insert(help4);</div>
 
1869
<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160;    }</div>
 
1870
<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160;  }</div>
 
1871
<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160;</div>
 
1872
<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
1873
<div class="line"><a name="l02029"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#ac0b48539bdee44dbe1368bcfd412f33f"> 2029</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#ac0b48539bdee44dbe1368bcfd412f33f">IsotopeWaveletTransform&lt;PeakType&gt;::updateBoxStates</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSExperiment.html">MSExperiment&lt;PeakType&gt;</a>&amp; map, <span class="keyword">const</span> <a class="code" href="group__Concept.html#gaf9ecec2d692138fab9167164a457cbd4">Size</a> scan_index, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> RT_interleave,</div>
 
1874
<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>&#160;                                                          <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> RT_votes_cutoff, <span class="keyword">const</span> <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> front_bound, <span class="keyword">const</span> <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> end_bound)</div>
 
1875
<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160;  {</div>
 
1876
<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160;    <span class="keyword">typename</span> std::multimap&lt;DoubleReal, Box&gt;::iterator iter, iter2;</div>
 
1877
<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160;</div>
 
1878
<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160;    <span class="keywordflow">if</span> ((<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a>)scan_index == end_bound &amp;&amp; end_bound != (<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a>)map.<a class="code" href="classOpenMS_1_1MSExperiment.html#a9d78a687cf2a391198bb3cbc08bc06cb">size</a>() - 1)</div>
 
1879
<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160;    {</div>
 
1880
<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160;      <span class="keywordflow">for</span> (iter = open_boxes_.begin(); iter != open_boxes_.end(); ++iter)</div>
 
1881
<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160;      {</div>
 
1882
<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
1883
<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160;<span class="preprocessor"></span>        std::cout &lt;&lt; <span class="stringliteral">&quot;LOW THREAD insert in end_box &quot;</span> &lt;&lt; iter-&gt;first &lt;&lt; std::endl;</div>
 
1884
<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160;        <span class="keyword">typename</span> Box::iterator dings;</div>
 
1885
<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160;        <span class="keywordflow">for</span> (dings = iter-&gt;second.begin(); dings != iter-&gt;second.end(); ++dings)</div>
 
1886
<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160;          std::cout &lt;&lt; map[dings-&gt;first].getRT() &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; dings-&gt;second.c + 1 &lt;&lt;  std::endl;</div>
 
1887
<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160;<span class="preprocessor">#endif</span></div>
 
1888
<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>&#160;<span class="preprocessor"></span>        end_boxes_.insert(*iter);</div>
 
1889
<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160;      }</div>
 
1890
<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160;      open_boxes_.<a class="code" href="classOpenMS_1_1MSExperiment.html#af072fc84225ae927f7527f208ea86cbd">clear</a>();</div>
 
1891
<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160;      <span class="keywordflow">return</span>;</div>
 
1892
<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160;    }</div>
 
1893
<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160;</div>
 
1894
<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160;    <span class="keywordflow">for</span> (iter = open_boxes_.begin(); iter != open_boxes_.end(); )</div>
 
1895
<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160;    {</div>
 
1896
<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
1897
<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160;<span class="preprocessor"></span>      <span class="keywordflow">if</span> (front_bound &gt; 0)</div>
 
1898
<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160;      {</div>
 
1899
<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160;        std::cout &lt;&lt; <span class="stringliteral">&quot;HIGH THREAD open box. &quot;</span> &lt;&lt; iter-&gt;first &lt;&lt; <span class="stringliteral">&quot;\t current scan index &quot;</span> &lt;&lt; scan_index &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; ((iter-&gt;second.begin()))-&gt;first &lt;&lt; <span class="stringliteral">&quot;\t of last scan &quot;</span> &lt;&lt; map.<a class="code" href="classOpenMS_1_1MSExperiment.html#a9d78a687cf2a391198bb3cbc08bc06cb">size</a>() - 1 &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; front_bound &lt;&lt; std::endl;</div>
 
1900
<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160;      }</div>
 
1901
<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160;<span class="preprocessor">#endif</span></div>
 
1902
<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160;<span class="preprocessor"></span></div>
 
1903
<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160;      <span class="comment">//For each Box we need to figure out, if and when the last RT value has been inserted</span></div>
 
1904
<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160;      <a class="code" href="classunsigned_01int.html">UInt</a> lastScan = (--(iter-&gt;second.end()))-&gt;first;</div>
 
1905
<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160;      <span class="keywordflow">if</span> (scan_index - lastScan &gt; RT_interleave + 1 || scan_index == map.<a class="code" href="classOpenMS_1_1MSExperiment.html#a9d78a687cf2a391198bb3cbc08bc06cb">size</a>() - 1) <span class="comment">//I.e. close the box!</span></div>
 
1906
<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160;      {</div>
 
1907
<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160;        <span class="keywordflow">if</span> (iter-&gt;second.begin()-&gt;first - front_bound &lt;= RT_interleave + 1 &amp;&amp; front_bound &gt; 0)</div>
 
1908
<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160;        {</div>
 
1909
<div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160;          iter2 = iter;</div>
 
1910
<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160;          ++iter2;</div>
 
1911
<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
1912
<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160;<span class="preprocessor"></span>          std::cout &lt;&lt; <span class="stringliteral">&quot;HIGH THREAD insert in front_box &quot;</span> &lt;&lt; iter-&gt;first &lt;&lt; std::endl;</div>
 
1913
<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160;<span class="preprocessor">#endif</span></div>
 
1914
<div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160;<span class="preprocessor"></span>          front_boxes_.insert(*iter);</div>
 
1915
<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160;          open_boxes_.erase(iter);</div>
 
1916
<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160;          iter = iter2;</div>
 
1917
<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160;          <span class="keywordflow">continue</span>;</div>
 
1918
<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160;        }</div>
 
1919
<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160;</div>
 
1920
<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160;        iter2 = iter;</div>
 
1921
<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160;        ++iter2;</div>
 
1922
<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160;        <span class="comment">//Please do **NOT** simplify the upcoming lines.</span></div>
 
1923
<div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160;        <span class="comment">//The &#39;obvious&#39; overhead is necessary since the object represented by iter might be erased</span></div>
 
1924
<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160;        <span class="comment">//by push2Box which might be called by extendBox_.</span></div>
 
1925
<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160;        <span class="keywordflow">if</span> (iter-&gt;second.size() &gt;= RT_votes_cutoff)</div>
 
1926
<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160;        {</div>
 
1927
<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160;          <span class="comment">//extendBox_ (map, iter-&gt;second);</span></div>
 
1928
<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160;          iter = iter2;</div>
 
1929
<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160;          closed_boxes_.insert(*(--iter));</div>
 
1930
<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160;        }</div>
 
1931
<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160;        open_boxes_.erase(iter);</div>
 
1932
<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160;        iter = iter2;</div>
 
1933
<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>&#160;      }</div>
 
1934
<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160;      <span class="keywordflow">else</span></div>
 
1935
<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160;      {</div>
 
1936
<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>&#160;        ++iter;</div>
 
1937
<div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>&#160;      }</div>
 
1938
<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160;    }</div>
 
1939
<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160;  }</div>
 
1940
<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>&#160;</div>
 
1941
<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
1942
<div class="line"><a name="l02098"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a6eb1919d7fb83824c39dff16d3fca8f7"> 2098</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a6eb1919d7fb83824c39dff16d3fca8f7">IsotopeWaveletTransform&lt;PeakType&gt;::extendBox_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSExperiment.html">MSExperiment&lt;PeakType&gt;</a>&amp; map, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#af8b1d83064f6ef81d7a617802bab249f">Box</a> box)</div>
 
1943
<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160;  {</div>
 
1944
<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
1945
<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160;<span class="preprocessor"></span>    std::cout &lt;&lt; <span class="stringliteral">&quot;**** CHECKING FOR BOX EXTENSIONS ****&quot;</span> &lt;&lt; std::endl;</div>
 
1946
<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160;<span class="preprocessor">#endif</span></div>
 
1947
<div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160;<span class="preprocessor"></span></div>
 
1948
<div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160;    <span class="comment">//Determining the elution profile</span></div>
 
1949
<div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160;    <span class="keyword">typename</span> Box::const_iterator iter;</div>
 
1950
<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160;    std::vector&lt;DoubleReal&gt; elution_profile(box.size());</div>
 
1951
<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160;    <a class="code" href="classunsigned_01int.html">UInt</a> index = 0;</div>
 
1952
<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160;    <span class="keywordflow">for</span> (iter = box.begin(); iter != box.end(); ++iter, ++index)</div>
 
1953
<div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160;    {</div>
 
1954
<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160;      <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaf9ecec2d692138fab9167164a457cbd4">Size</a> i = iter-&gt;second.MZ_begin; i != iter-&gt;second.MZ_end; ++i)</div>
 
1955
<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160;      {</div>
 
1956
<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160;        elution_profile[index] += map[iter-&gt;second.RT_index][i].getIntensity();</div>
 
1957
<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160;      }</div>
 
1958
<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160;      elution_profile[index] /= iter-&gt;second.MZ_end - iter-&gt;second.MZ_begin + 1.;</div>
 
1959
<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160;    }</div>
 
1960
<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160;</div>
 
1961
<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> max = 0;</div>
 
1962
<div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160;    <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> max_index = INT_MIN;</div>
 
1963
<div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaf9ecec2d692138fab9167164a457cbd4">Size</a> i = 0; i &lt; elution_profile.size(); ++i)</div>
 
1964
<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160;    {</div>
 
1965
<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160;      <span class="keywordflow">if</span> (elution_profile[i] &gt; max)</div>
 
1966
<div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160;      {</div>
 
1967
<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160;        max_index = i;</div>
 
1968
<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160;        max = elution_profile[i];</div>
 
1969
<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160;      }</div>
 
1970
<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160;    }</div>
 
1971
<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160;</div>
 
1972
<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160;    <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> max_extension = (<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a>)(elution_profile.size()) - 2 * max_index;</div>
 
1973
<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160;</div>
 
1974
<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> av_elution = 0;</div>
 
1975
<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaf9ecec2d692138fab9167164a457cbd4">Size</a> i = 0; i &lt; elution_profile.size(); ++i)</div>
 
1976
<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160;    {</div>
 
1977
<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160;      av_elution += elution_profile[i];</div>
 
1978
<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160;    }</div>
 
1979
<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>&#160;    av_elution /= (<a class="code" href="group__Concept.html#gace75bfb1aba684e874dffee13738bd15">DoubleReal</a>)elution_profile.size();</div>
 
1980
<div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>&#160;</div>
 
1981
<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> sd_elution = 0;</div>
 
1982
<div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaf9ecec2d692138fab9167164a457cbd4">Size</a> i = 0; i &lt; elution_profile.size(); ++i)</div>
 
1983
<div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160;    {</div>
 
1984
<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160;      sd_elution += (av_elution - elution_profile[i]) * (av_elution - elution_profile[i]);</div>
 
1985
<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160;    }</div>
 
1986
<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160;    sd_elution /= (<a class="code" href="group__Concept.html#gace75bfb1aba684e874dffee13738bd15">DoubleReal</a>)(elution_profile.size() - 1);</div>
 
1987
<div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160;    sd_elution = sqrt(sd_elution);</div>
 
1988
<div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160;</div>
 
1989
<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160;    <span class="comment">//Determine average m/z monoisotopic pos</span></div>
 
1990
<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> av_mz = 0;</div>
 
1991
<div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160;    <span class="keywordflow">for</span> (iter = box.begin(); iter != box.end(); ++iter, ++index)</div>
 
1992
<div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160;    {</div>
 
1993
<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160;      av_mz += iter-&gt;second.mz;</div>
 
1994
<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
1995
<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160;<span class="preprocessor"></span>      std::cout &lt;&lt; iter-&gt;second.RT &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; iter-&gt;second.mz &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; iter-&gt;second.c + 1 &lt;&lt; std::endl;</div>
 
1996
<div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160;<span class="preprocessor">#endif</span></div>
 
1997
<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160;<span class="preprocessor"></span>    }</div>
 
1998
<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160;    av_mz /= (<a class="code" href="group__Concept.html#gace75bfb1aba684e874dffee13738bd15">DoubleReal</a>)box.size();</div>
 
1999
<div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160;</div>
 
2000
<div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160;</div>
 
2001
<div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160;    <span class="comment">//Boundary check</span></div>
 
2002
<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160;    <span class="keywordflow">if</span> ((<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a>)(box.begin()-&gt;second.RT_index) - 1 &lt; 0)</div>
 
2003
<div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160;    {</div>
 
2004
<div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160;      <span class="keywordflow">return</span>;</div>
 
2005
<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160;    }</div>
 
2006
<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160;</div>
 
2007
<div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160;    <a class="code" href="classunsigned_01int.html">UInt</a> pre_index =  box.begin()-&gt;second.RT_index - 1;</div>
 
2008
<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160;    <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;::const_iterator</a> c_iter =  map[pre_index].MZBegin(av_mz);</div>
 
2009
<div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> pre_elution = 0;</div>
 
2010
<div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160;</div>
 
2011
<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> mz_start = map[pre_index + 1][box.begin()-&gt;second.MZ_begin].getMZ();</div>
 
2012
<div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> mz_end = map[pre_index + 1][box.begin()-&gt;second.MZ_end].getMZ();</div>
 
2013
<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160;</div>
 
2014
<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160;    <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;::const_iterator</a> mz_start_iter = map[pre_index].MZBegin(mz_start), mz_end_iter = map[pre_index].MZBegin(mz_end);</div>
 
2015
<div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;::const_iterator</a> mz_iter = mz_start_iter; mz_iter != mz_end_iter; ++mz_iter)</div>
 
2016
<div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160;    {</div>
 
2017
<div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160;      pre_elution += mz_iter-&gt;getIntensity();</div>
 
2018
<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160;    }</div>
 
2019
<div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160;</div>
 
2020
<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160;</div>
 
2021
<div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160;    <span class="comment">//Do we need to extend at all?</span></div>
 
2022
<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160;    <span class="keywordflow">if</span> (pre_elution &lt;= av_elution - 2 * sd_elution)</div>
 
2023
<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160;    {</div>
 
2024
<div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160;      <span class="keywordflow">return</span>;</div>
 
2025
<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160;    }</div>
 
2026
<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160;</div>
 
2027
<div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160;    <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> c_index = max_extension;</div>
 
2028
<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160;    <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> first_index = box.begin()-&gt;second.RT_index;</div>
 
2029
<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> i = 1; i &lt; max_extension; ++i)</div>
 
2030
<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160;    {</div>
 
2031
<div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160;      c_index = first_index - i;</div>
 
2032
<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>&#160;      <span class="keywordflow">if</span> (c_index &lt; 0)</div>
 
2033
<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>&#160;      {</div>
 
2034
<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160;        <span class="keywordflow">break</span>;</div>
 
2035
<div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>&#160;      }</div>
 
2036
<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>&#160;</div>
 
2037
<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>&#160;      <span class="comment">//CHECK Majority vote for charge???????????????</span></div>
 
2038
<div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
2039
<div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>&#160;<span class="preprocessor"></span>      std::cout &lt;&lt; box.begin()-&gt;second.RT &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; av_mz &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; box.begin()-&gt;second.c + 1 &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; <span class="stringliteral">&quot; extending the box &quot;</span> &lt;&lt; std::endl;</div>
 
2040
<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>&#160;<span class="preprocessor">#endif</span></div>
 
2041
<div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>&#160;<span class="preprocessor"></span></div>
 
2042
<div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>&#160;      push2Box_(av_mz, c_index, box.begin()-&gt;second.c, box.begin()-&gt;second.score, c_iter-&gt;getIntensity(),</div>
 
2043
<div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>&#160;                map[c_index].getRT(), box.<a class="code" href="classOpenMS_1_1MSExperiment.html#a2387033802383edbdc95f9bbb12a707e">begin</a>()-&gt;second.MZ_begin, box.begin()-&gt;second.MZ_end);</div>
 
2044
<div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>&#160;    }</div>
 
2045
<div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>&#160;  }</div>
 
2046
<div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>&#160;</div>
 
2047
<div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
2048
<div class="line"><a name="l02204"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#aa6e604058ed988f0f108f1d7d446cd56"> 2204</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#aa6e604058ed988f0f108f1d7d446cd56">IsotopeWaveletTransform&lt;PeakType&gt;::clusterSeeds_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html">TransSpectrum</a>&amp; candidates,</div>
 
2049
<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>&#160;                                                        <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; ref, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> scan_index, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> c, <span class="keyword">const</span> <span class="keywordtype">bool</span> check_PPMs)</div>
 
2050
<div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>&#160;  {</div>
 
2051
<div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>&#160;    <span class="keyword">typename</span> std::multimap&lt;DoubleReal, Box&gt;::iterator iter;</div>
 
2052
<div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>&#160;    <span class="keyword">typename</span> Box::iterator box_iter;</div>
 
2053
<div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>&#160;    std::vector&lt;BoxElement&gt; final_box;</div>
 
2054
<div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> c_mz, av_score = 0, av_mz = 0, av_intens = 0, av_abs_intens = 0, count = 0;</div>
 
2055
<div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> virtual_av_mz = 0, virtual_av_intens = 0, virtual_av_abs_intens = 0, virtual_count = 0;</div>
 
2056
<div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>&#160;</div>
 
2057
<div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>&#160;    <span class="keyword">typename</span> std::pair&lt;DoubleReal, DoubleReal&gt; c_extend;</div>
 
2058
<div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>&#160;    <span class="keywordflow">for</span> (iter = tmp_boxes_-&gt;at(c).begin(); iter != tmp_boxes_-&gt;at(c).end(); ++iter)</div>
 
2059
<div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>&#160;    {</div>
 
2060
<div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>&#160;      <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#af8b1d83064f6ef81d7a617802bab249f">Box</a>&amp; c_box = iter-&gt;second;</div>
 
2061
<div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>&#160;      av_score = 0, av_mz = 0, av_intens = 0, av_abs_intens = 0, count = 0;</div>
 
2062
<div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>&#160;      virtual_av_mz = 0, virtual_av_intens = 0, virtual_av_abs_intens = 0, virtual_count = 0;</div>
 
2063
<div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>&#160;</div>
 
2064
<div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>&#160;      <span class="keywordflow">for</span> (box_iter = c_box.begin(); box_iter != c_box.end(); ++box_iter)</div>
 
2065
<div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>&#160;      {</div>
 
2066
<div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>&#160;        <span class="keywordflow">if</span> (box_iter-&gt;second.score == 0) <span class="comment">//virtual helping point</span></div>
 
2067
<div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>&#160;        {</div>
 
2068
<div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>&#160;          <span class="keywordflow">if</span> (count != 0)</div>
 
2069
<div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>&#160;            <span class="keywordflow">continue</span>; <span class="comment">//it is in any way not pure virtual</span></div>
 
2070
<div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>&#160;</div>
 
2071
<div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>&#160;          c_mz = box_iter-&gt;second.mz;</div>
 
2072
<div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>&#160;          virtual_av_intens += box_iter-&gt;second.intens;</div>
 
2073
<div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>&#160;          virtual_av_abs_intens += fabs(box_iter-&gt;second.intens);</div>
 
2074
<div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>&#160;          virtual_av_mz += c_mz * fabs(box_iter-&gt;second.intens);</div>
 
2075
<div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>&#160;          ++virtual_count;</div>
 
2076
<div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>&#160;        }</div>
 
2077
<div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>&#160;        <span class="keywordflow">else</span></div>
 
2078
<div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>&#160;        {</div>
 
2079
<div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>&#160;          c_mz = box_iter-&gt;second.mz;</div>
 
2080
<div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>&#160;          av_score += box_iter-&gt;second.score;</div>
 
2081
<div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>&#160;          av_intens += box_iter-&gt;second.intens;</div>
 
2082
<div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>&#160;          av_abs_intens += fabs(box_iter-&gt;second.intens);</div>
 
2083
<div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>&#160;          av_mz += c_mz * fabs(box_iter-&gt;second.intens);</div>
 
2084
<div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>&#160;          ++count;</div>
 
2085
<div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>&#160;        }</div>
 
2086
<div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>&#160;      }</div>
 
2087
<div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>&#160;</div>
 
2088
<div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>&#160;      <span class="keywordflow">if</span> (count == 0) <span class="comment">//pure virtual helping box</span></div>
 
2089
<div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>&#160;      {</div>
 
2090
<div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>&#160;        av_intens = virtual_av_intens / virtual_count;</div>
 
2091
<div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>&#160;        av_score = 0;</div>
 
2092
<div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>&#160;        av_mz = virtual_av_mz / virtual_av_abs_intens;</div>
 
2093
<div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>&#160;      }</div>
 
2094
<div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>&#160;      <span class="keywordflow">else</span></div>
 
2095
<div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>&#160;      {</div>
 
2096
<div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>&#160;        av_intens /= count;</div>
 
2097
<div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>&#160;        av_score /= count;</div>
 
2098
<div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>&#160;        av_mz /= av_abs_intens;</div>
 
2099
<div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>&#160;      }</div>
 
2100
<div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>&#160;</div>
 
2101
<div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>&#160;      <a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html">BoxElement</a> c_box_element;</div>
 
2102
<div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>&#160;      c_box_element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#ae7800b5f37aa029e53c6776f1952cdc7">mz</a> = av_mz;</div>
 
2103
<div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>&#160;      c_box_element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#a6d47e4bb5a579f9dd390c2a4f07a3cd3">c</a> = <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>;</div>
 
2104
<div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>&#160;      c_box_element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#aa2ac7da25c2023e7cf03863e5b907fd9">score</a> = av_score;</div>
 
2105
<div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>&#160;      c_box_element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#a991a665a859b92931ef2ddccea7d98c5">intens</a> = av_intens;</div>
 
2106
<div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>&#160;</div>
 
2107
<div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>&#160;      c_box_element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#afc4478a0397a76fef003746ff45fc201">RT</a> = c_box.begin()-&gt;second.RT;</div>
 
2108
<div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>&#160;</div>
 
2109
<div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>&#160;      final_box.push_back(c_box_element);</div>
 
2110
<div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>&#160;    }</div>
 
2111
<div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>&#160;</div>
 
2112
<div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>&#160;    <a class="code" href="classunsigned_01int.html">UInt</a> num_o_feature = final_box.size();</div>
 
2113
<div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>&#160;    <span class="keywordflow">if</span> (num_o_feature == 0)</div>
 
2114
<div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>&#160;    {</div>
 
2115
<div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>&#160;      tmp_boxes_-&gt;at(c).clear();</div>
 
2116
<div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>&#160;      <span class="keywordflow">return</span>;</div>
 
2117
<div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>&#160;    }</div>
 
2118
<div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>&#160;</div>
 
2119
<div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>&#160;    <span class="comment">//Computing the derivatives</span></div>
 
2120
<div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>&#160;    std::vector&lt;DoubleReal&gt; bwd_diffs(num_o_feature, 0);</div>
 
2121
<div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>&#160;</div>
 
2122
<div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>&#160;    bwd_diffs[0] = 0;</div>
 
2123
<div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 1; i &lt; num_o_feature; ++i)</div>
 
2124
<div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>&#160;    {</div>
 
2125
<div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>&#160;      bwd_diffs[i] = (final_box[i].intens - final_box[i - 1].intens) / (final_box[i].mz - final_box[i - 1].mz);</div>
 
2126
<div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>&#160;    }</div>
 
2127
<div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>&#160;</div>
 
2128
<div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
2129
<div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>&#160;<span class="preprocessor"></span>    std::ofstream ofile_bwd(<span class="stringliteral">&quot;bwd_gpu.dat&quot;</span>);</div>
 
2130
<div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 0; i &lt; num_o_feature; ++i)</div>
 
2131
<div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>&#160;    {</div>
 
2132
<div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>&#160;      ofile_bwd &lt;&lt; final_box[i].mz &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; bwd_diffs[i] &lt;&lt; std::endl;</div>
 
2133
<div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>&#160;    }</div>
 
2134
<div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>&#160;    ofile_bwd.close();</div>
 
2135
<div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>&#160;<span class="preprocessor">#endif</span></div>
 
2136
<div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>&#160;<span class="preprocessor"></span></div>
 
2137
<div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>&#160;    <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 0; i &lt; num_o_feature - 1; ++i)</div>
 
2138
<div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>&#160;    {</div>
 
2139
<div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>&#160;      <span class="keywordflow">while</span> (i &lt; num_o_feature - 2)</div>
 
2140
<div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>&#160;      {</div>
 
2141
<div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>&#160;        <span class="keywordflow">if</span> (final_box[i].score &gt; 0 || final_box[i].score == -1000) <span class="comment">//this has been an helping point</span></div>
 
2142
<div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>&#160;          <span class="keywordflow">break</span>;</div>
 
2143
<div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>&#160;        ++i;</div>
 
2144
<div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>&#160;      }</div>
 
2145
<div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>&#160;</div>
 
2146
<div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>&#160;      <span class="keywordflow">if</span> (bwd_diffs[i] &gt; 0 &amp;&amp; bwd_diffs[i + 1] &lt; 0)</div>
 
2147
<div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>&#160;      {</div>
 
2148
<div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>&#160;        checkPositionForPlausibility_(candidates, ref, final_box[i].mz, final_box[i].c, scan_index, check_PPMs, final_box[i].intens, final_box[i].score);</div>
 
2149
<div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>&#160;        <span class="keywordflow">continue</span>;</div>
 
2150
<div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>&#160;      }</div>
 
2151
<div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>&#160;    }</div>
 
2152
<div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>&#160;</div>
 
2153
<div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>&#160;    tmp_boxes_-&gt;at(c).clear();</div>
 
2154
<div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>&#160;  }</div>
 
2155
<div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>&#160;</div>
 
2156
<div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
2157
<div class="line"><a name="l02313"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a12db861a7fd5db1a8aea9e6c4a403a89"> 2313</a></span>&#160;  <a class="code" href="classOpenMS_1_1FeatureMap.html">FeatureMap&lt;Feature&gt;</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a12db861a7fd5db1a8aea9e6c4a403a89">IsotopeWaveletTransform&lt;PeakType&gt;::mapSeeds2Features</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSExperiment.html">MSExperiment&lt;PeakType&gt;</a>&amp; map, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> RT_votes_cutoff)</div>
 
2158
<div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>&#160;  {</div>
 
2159
<div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>&#160;    <a class="code" href="classOpenMS_1_1FeatureMap.html">FeatureMap&lt;Feature&gt;</a> feature_map;</div>
 
2160
<div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>&#160;    <span class="keyword">typename</span> std::multimap&lt;DoubleReal, Box&gt;::iterator iter;</div>
 
2161
<div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>&#160;    <span class="keyword">typename</span> Box::iterator box_iter;</div>
 
2162
<div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>&#160;    <a class="code" href="classunsigned_01int.html">UInt</a> best_charge_index; <a class="code" href="classdouble.html">DoubleReal</a> best_charge_score, c_mz, c_RT; <a class="code" href="classunsigned_01int.html">UInt</a> c_charge;</div>
 
2163
<div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> av_intens = 0, av_ref_intens = 0, av_score = 0, av_mz = 0, av_RT = 0, mz_cutoff, sum_of_ref_intenses_g;</div>
 
2164
<div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>&#160;    <span class="keywordtype">bool</span> restart = <span class="keyword">false</span>;</div>
 
2165
<div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>&#160;</div>
 
2166
<div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>&#160;    <span class="keyword">typename</span> std::pair&lt;DoubleReal, DoubleReal&gt; c_extend;</div>
 
2167
<div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>&#160;    <span class="keywordflow">for</span> (iter = closed_boxes_.begin(); iter != closed_boxes_.end(); ++iter)</div>
 
2168
<div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>&#160;    {</div>
 
2169
<div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>&#160;      sum_of_ref_intenses_g = 0;</div>
 
2170
<div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>&#160;      <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#af8b1d83064f6ef81d7a617802bab249f">Box</a>&amp; c_box = iter-&gt;second;</div>
 
2171
<div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>&#160;      std::vector&lt;DoubleReal&gt; charge_votes(max_charge_, 0), charge_binary_votes(max_charge_, 0);</div>
 
2172
<div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>&#160;      restart = <span class="keyword">false</span>;</div>
 
2173
<div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>&#160;</div>
 
2174
<div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>&#160;      <span class="comment">//Let&#39;s first determine the charge</span></div>
 
2175
<div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>&#160;      <span class="comment">//Therefor, we can use two types of votes: qualitative ones (charge_binary_votes) or quantitative ones (charge_votes)</span></div>
 
2176
<div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>&#160;      <span class="keywordflow">for</span> (box_iter = c_box.begin(); box_iter != c_box.end(); ++box_iter)</div>
 
2177
<div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>&#160;      {</div>
 
2178
<div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
2179
<div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>&#160;<span class="preprocessor"></span>        <span class="keywordflow">if</span> (trunc(box_iter-&gt;second.mz) == 874)</div>
 
2180
<div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>&#160;          std::cout &lt;&lt; box_iter-&gt;second.c &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt;  box_iter-&gt;second.intens  &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; box_iter-&gt;second.score &lt;&lt; std::endl;</div>
 
2181
<div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>&#160;#endif</div>
 
2182
<div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>&#160;</div>
 
2183
<div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>&#160;        if (box_iter-&gt;second.score == -1000)</div>
 
2184
<div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>&#160;        {</div>
 
2185
<div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>&#160;          restart = <span class="keyword">true</span>;</div>
 
2186
<div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>&#160;          <span class="keywordflow">break</span>;</div>
 
2187
<div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>&#160;        }</div>
 
2188
<div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>&#160;</div>
 
2189
<div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>&#160;        charge_votes[box_iter-&gt;second.c] += box_iter-&gt;second.intens; <span class="comment">//score; Do not use score, can get problematic for charge state 2 vs 4</span></div>
 
2190
<div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>&#160;        ++charge_binary_votes[box_iter-&gt;second.c];</div>
 
2191
<div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>&#160;      }</div>
 
2192
<div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>&#160;</div>
 
2193
<div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>&#160;      <span class="keywordflow">if</span> (restart)</div>
 
2194
<div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>&#160;      {</div>
 
2195
<div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>&#160;        <span class="keywordflow">continue</span>;</div>
 
2196
<div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>&#160;      }</div>
 
2197
<div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>&#160;</div>
 
2198
<div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>&#160;      <span class="comment">//... determining the best fitting charge</span></div>
 
2199
<div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>&#160;      best_charge_index = 0; best_charge_score = 0;</div>
 
2200
<div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>&#160;      <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 0; i &lt; max_charge_; ++i)</div>
 
2201
<div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>&#160;      {</div>
 
2202
<div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>&#160;        <span class="keywordflow">if</span> (charge_votes[i] &gt; best_charge_score)</div>
 
2203
<div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>&#160;        {</div>
 
2204
<div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>&#160;          best_charge_index = i;</div>
 
2205
<div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>&#160;          best_charge_score = charge_votes[i];</div>
 
2206
<div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>&#160;        }</div>
 
2207
<div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>&#160;      }</div>
 
2208
<div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>&#160;</div>
 
2209
<div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>&#160;      <span class="comment">//Pattern found in too few RT scan</span></div>
 
2210
<div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>&#160;      <span class="keywordflow">if</span> (charge_binary_votes[best_charge_index] &lt; RT_votes_cutoff &amp;&amp; RT_votes_cutoff &lt;= map.<a class="code" href="classOpenMS_1_1MSExperiment.html#a9d78a687cf2a391198bb3cbc08bc06cb">size</a>())</div>
 
2211
<div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>&#160;      {</div>
 
2212
<div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>&#160;        <span class="keywordflow">continue</span>;</div>
 
2213
<div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>&#160;      }</div>
 
2214
<div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>&#160;</div>
 
2215
<div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>&#160;      c_charge = best_charge_index + 1; <span class="comment">//that&#39;s the finally predicted charge state for the pattern</span></div>
 
2216
<div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>&#160;</div>
 
2217
<div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>&#160;      av_intens = 0, av_ref_intens = 0, av_score = 0, av_mz = 0, av_RT = 0;</div>
 
2218
<div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>&#160;      <span class="comment">//Now, let&#39;s get the RT boundaries for the box</span></div>
 
2219
<div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>&#160;      std::vector&lt;DPosition&lt;2&gt; &gt; point_set;</div>
 
2220
<div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>&#160;      <a class="code" href="classdouble.html">DoubleReal</a> sum_of_ref_intenses_l;</div>
 
2221
<div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>&#160;      <span class="keywordflow">for</span> (box_iter = c_box.begin(); box_iter != c_box.end(); ++box_iter)</div>
 
2222
<div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>&#160;      {</div>
 
2223
<div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>&#160;        sum_of_ref_intenses_l = 0;</div>
 
2224
<div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>&#160;        c_mz = box_iter-&gt;second.mz;</div>
 
2225
<div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>&#160;        c_RT = box_iter-&gt;second.RT;</div>
 
2226
<div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>&#160;</div>
 
2227
<div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>&#160;        mz_cutoff = <a class="code" href="classOpenMS_1_1IsotopeWavelet.html#aa4c1055469be0ca451cdaef1514d3981">IsotopeWavelet::getMzPeakCutOffAtMonoPos</a>(c_mz, c_charge);</div>
 
2228
<div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>&#160;</div>
 
2229
<div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>&#160;        point_set.push_back(<a class="code" href="classOpenMS_1_1DPosition.html">DPosition&lt;2&gt;</a>(c_RT, c_mz - <a class="code" href="namespaceOpenMS_1_1Constants.html#afb04ba9e1308cbbaa20a944f0ab124af">Constants::IW_QUARTER_NEUTRON_MASS</a> / (<a class="code" href="classdouble.html">DoubleReal</a>)c_charge));</div>
 
2230
<div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>&#160;        <span class="comment">//-1 since we are already at the first peak and +0.75, since this includes the last peak of the wavelet as a whole</span></div>
 
2231
<div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>&#160;        point_set.push_back(<a class="code" href="classOpenMS_1_1DPosition.html">DPosition&lt;2&gt;</a>(c_RT, c_mz + mz_cutoff / (<a class="code" href="classdouble.html">DoubleReal</a>)c_charge));</div>
 
2232
<div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>&#160;</div>
 
2233
<div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
2234
<div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>&#160;<span class="preprocessor"></span>        std::cout &lt;&lt; <span class="stringliteral">&quot;Intenstype: &quot;</span> &lt;&lt; intenstype_ &lt;&lt; std::endl;</div>
 
2235
<div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>&#160;<span class="preprocessor">#endif</span></div>
 
2236
<div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>&#160;<span class="preprocessor"></span>        <span class="keywordflow">if</span> (intenstype_ == <span class="stringliteral">&quot;ref&quot;</span>)</div>
 
2237
<div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>&#160;        {</div>
 
2238
<div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>&#160;          <span class="comment">//Find monoisotopic max</span></div>
 
2239
<div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>&#160;          <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; c_spec(map[box_iter-&gt;second.RT_index]);</div>
 
2240
<div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>&#160;          <span class="comment">//&#39;Correct&#39; possible shift</span></div>
 
2241
<div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>&#160;          <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; mz_cutoff; ++i)</div>
 
2242
<div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>&#160;          {</div>
 
2243
<div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>&#160;            <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;::const_iterator</a> h_iter = c_spec.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a808327302a2ba3fb630ea132d32db942">MZBegin</a>(c_mz + i * <a class="code" href="namespaceOpenMS_1_1Constants.html#a4045630757d161b1f4dc0d2248202fd0">Constants::IW_NEUTRON_MASS</a> / c_charge + <a class="code" href="namespaceOpenMS_1_1Constants.html#afb04ba9e1308cbbaa20a944f0ab124af">Constants::IW_QUARTER_NEUTRON_MASS</a> / (<a class="code" href="classdouble.html">DoubleReal</a>)c_charge), hc_iter = c_spec.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a808327302a2ba3fb630ea132d32db942">MZBegin</a>(c_mz + i * <a class="code" href="namespaceOpenMS_1_1Constants.html#a4045630757d161b1f4dc0d2248202fd0">Constants::IW_NEUTRON_MASS</a> / c_charge);</div>
 
2244
<div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>&#160;</div>
 
2245
<div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>&#160;            hc_iter = c_spec.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a808327302a2ba3fb630ea132d32db942">MZBegin</a>(c_mz + i * <a class="code" href="namespaceOpenMS_1_1Constants.html#a4045630757d161b1f4dc0d2248202fd0">Constants::IW_NEUTRON_MASS</a> / c_charge);</div>
 
2246
<div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>&#160;</div>
 
2247
<div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>&#160;            <span class="keywordflow">while</span> (h_iter != c_spec.begin())</div>
 
2248
<div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>&#160;            {</div>
 
2249
<div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>&#160;</div>
 
2250
<div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
2251
<div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>&#160;<span class="preprocessor"></span>              <span class="keywordflow">if</span> (trunc(c_mz) == 874)</div>
 
2252
<div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>&#160;              {</div>
 
2253
<div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>&#160;                std::cout &lt;&lt; <span class="stringliteral">&quot;cmz: &quot;</span> &lt;&lt; c_mz + i * <a class="code" href="namespaceOpenMS_1_1Constants.html#a4045630757d161b1f4dc0d2248202fd0">Constants::IW_NEUTRON_MASS</a> / c_charge &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; hc_iter-&gt;getMZ() &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; hc_iter-&gt;getIntensity() &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; h_iter-&gt;getMZ() &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; h_iter-&gt;getIntensity() &lt;&lt; std::endl;</div>
 
2254
<div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>&#160;              }</div>
 
2255
<div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>&#160;<span class="preprocessor">#endif</span></div>
 
2256
<div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>&#160;<span class="preprocessor"></span></div>
 
2257
<div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>&#160;              --h_iter;</div>
 
2258
<div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>&#160;              <span class="keywordflow">if</span> (h_iter-&gt;getIntensity() &gt; hc_iter-&gt;getIntensity() || (h_iter-&gt;getIntensity() == hc_iter-&gt;getIntensity() &amp;&amp; hc_iter-&gt;getIntensity() == 0))</div>
 
2259
<div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>&#160;              {</div>
 
2260
<div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>&#160;                hc_iter = h_iter;</div>
 
2261
<div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>&#160;              }</div>
 
2262
<div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>&#160;</div>
 
2263
<div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>&#160;              <span class="keywordflow">if</span> (c_mz + i * <a class="code" href="namespaceOpenMS_1_1Constants.html#a4045630757d161b1f4dc0d2248202fd0">Constants::IW_NEUTRON_MASS</a> / c_charge - h_iter-&gt;getMZ() &gt; <a class="code" href="namespaceOpenMS_1_1Constants.html#afb04ba9e1308cbbaa20a944f0ab124af">Constants::IW_QUARTER_NEUTRON_MASS</a> / (<a class="code" href="group__Concept.html#gace75bfb1aba684e874dffee13738bd15">DoubleReal</a>)c_charge)</div>
 
2264
<div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>&#160;              {</div>
 
2265
<div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>&#160;                <span class="keywordflow">break</span>;</div>
 
2266
<div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>&#160;              }</div>
 
2267
<div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>&#160;            }</div>
 
2268
<div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
2269
<div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>&#160;<span class="preprocessor"></span>            <span class="keywordflow">if</span> (trunc(c_mz) == 874)</div>
 
2270
<div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>&#160;            {</div>
 
2271
<div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>&#160;              std::cout &lt;&lt; <span class="stringliteral">&quot;c_mz: &quot;</span> &lt;&lt; c_mz + i * <a class="code" href="namespaceOpenMS_1_1Constants.html#a4045630757d161b1f4dc0d2248202fd0">Constants::IW_NEUTRON_MASS</a> / c_charge &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; hc_iter-&gt;getMZ() &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; hc_iter-&gt;getIntensity() &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; i * <a class="code" href="namespaceOpenMS_1_1Constants.html#a4045630757d161b1f4dc0d2248202fd0">Constants::IW_NEUTRON_MASS</a> / c_charge &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span>;</div>
 
2272
<div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>&#160;            }</div>
 
2273
<div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>&#160;<span class="preprocessor">#endif</span></div>
 
2274
<div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>&#160;<span class="preprocessor"></span>            sum_of_ref_intenses_l += hc_iter-&gt;getIntensity();</div>
 
2275
<div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
2276
<div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>&#160;<span class="preprocessor"></span>            <span class="keywordflow">if</span> (trunc(c_mz) == 874)</div>
 
2277
<div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>&#160;            {</div>
 
2278
<div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>&#160;              std::cout &lt;&lt; sum_of_ref_intenses_l &lt;&lt;  <span class="stringliteral">&quot;********&quot;</span> &lt;&lt; std::endl;</div>
 
2279
<div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>&#160;            }</div>
 
2280
<div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>&#160;<span class="preprocessor">#endif</span></div>
 
2281
<div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>&#160;<span class="preprocessor"></span>          }</div>
 
2282
<div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>&#160;        }</div>
 
2283
<div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>&#160;</div>
 
2284
<div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>&#160;        <span class="keywordflow">if</span> (best_charge_index == box_iter-&gt;second.c)</div>
 
2285
<div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>&#160;        {</div>
 
2286
<div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>&#160;          av_score += box_iter-&gt;second.score;</div>
 
2287
<div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>&#160;          av_intens += box_iter-&gt;second.intens;</div>
 
2288
<div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>&#160;          av_ref_intens += box_iter-&gt;second.ref_intens;</div>
 
2289
<div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>&#160;          sum_of_ref_intenses_g += sum_of_ref_intenses_l;</div>
 
2290
<div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>&#160;          av_mz += c_mz * box_iter-&gt;second.intens;</div>
 
2291
<div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>&#160;        }</div>
 
2292
<div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>&#160;        av_RT += c_RT;</div>
 
2293
<div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>&#160;      }</div>
 
2294
<div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>&#160;</div>
 
2295
<div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>&#160;      av_mz /= av_intens;</div>
 
2296
<div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>&#160;      av_ref_intens /= (<a class="code" href="group__Concept.html#gace75bfb1aba684e874dffee13738bd15">DoubleReal</a>)charge_binary_votes[best_charge_index];</div>
 
2297
<div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>&#160;      av_score /= (<a class="code" href="group__Concept.html#gace75bfb1aba684e874dffee13738bd15">DoubleReal</a>)charge_binary_votes[best_charge_index];</div>
 
2298
<div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>&#160;      av_RT /= (<a class="code" href="group__Concept.html#gace75bfb1aba684e874dffee13738bd15">DoubleReal</a>)c_box.size();</div>
 
2299
<div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>&#160;</div>
 
2300
<div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
2301
<div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>&#160;<span class="preprocessor"></span>      <span class="keywordflow">if</span> (trunc(av_mz) == 874)</div>
 
2302
<div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>&#160;        std::cout &lt;&lt; av_mz &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; best_charge_index &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; best_charge_score &lt;&lt; std::endl;</div>
 
2303
<div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>&#160;<span class="preprocessor">#endif</span></div>
 
2304
<div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>&#160;<span class="preprocessor"></span></div>
 
2305
<div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>&#160;      <a class="code" href="classOpenMS_1_1Feature.html">Feature</a> c_feature;</div>
 
2306
<div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>&#160;      <a class="code" href="classOpenMS_1_1ConvexHull2D.html">ConvexHull2D</a> c_conv_hull;</div>
 
2307
<div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>&#160;      c_conv_hull.<a class="code" href="classOpenMS_1_1ConvexHull2D.html#ad84ba51670fc0bd9b6b2091ba27c3013">addPoints</a>(point_set);</div>
 
2308
<div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>&#160;      c_feature.<a class="code" href="classOpenMS_1_1BaseFeature.html#ab595724fe9b9eb5d37011f07d90b9e0b">setCharge</a>(c_charge);</div>
 
2309
<div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>&#160;      c_feature.<a class="code" href="classOpenMS_1_1Feature.html#a8d65806c4f009695ab7bcf61eaf5546a">setConvexHulls</a>(std::vector&lt;ConvexHull2D&gt;(1, c_conv_hull));</div>
 
2310
<div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>&#160;</div>
 
2311
<div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>&#160;      <span class="comment">//This makes the intensity value independent of the m/z (the lambda) value (Skellam distribution)</span></div>
 
2312
<div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>&#160;      <span class="keywordflow">if</span> (intenstype_ == <span class="stringliteral">&quot;corrected&quot;</span>)</div>
 
2313
<div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>&#160;      {</div>
 
2314
<div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>&#160;        <a class="code" href="classdouble.html">DoubleReal</a> lambda = <a class="code" href="classOpenMS_1_1IsotopeWavelet.html#a93ce8c24484a3faef662be1bc3ccbeca">IsotopeWavelet::getLambdaL</a>(av_mz * c_charge);</div>
 
2315
<div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>&#160;        av_intens /= exp(-2 * lambda) * boost::math::cyl_bessel_i(0, 2 * lambda);</div>
 
2316
<div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>&#160;      }</div>
 
2317
<div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>&#160;      <span class="keywordflow">if</span> (intenstype_ == <span class="stringliteral">&quot;ref&quot;</span>)</div>
 
2318
<div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>&#160;      {</div>
 
2319
<div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
2320
<div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>&#160;<span class="preprocessor"></span>        <span class="keywordflow">if</span> (trunc(c_mz) == 874)</div>
 
2321
<div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>&#160;        {</div>
 
2322
<div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>&#160;          std::cout &lt;&lt; sum_of_ref_intenses_g &lt;&lt;  <span class="stringliteral">&quot;####&quot;</span> &lt;&lt; std::endl;</div>
 
2323
<div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>&#160;        }</div>
 
2324
<div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>&#160;<span class="preprocessor">#endif</span></div>
 
2325
<div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>&#160;<span class="preprocessor"></span></div>
 
2326
<div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>&#160;        av_intens = sum_of_ref_intenses_g;</div>
 
2327
<div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>&#160;      }</div>
 
2328
<div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>&#160;</div>
 
2329
<div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>&#160;      c_feature.<a class="code" href="classOpenMS_1_1Peak2D.html#a2694f0775c46d9076355cb85d9815425">setMZ</a>(av_mz);</div>
 
2330
<div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>&#160;      c_feature.<a class="code" href="classOpenMS_1_1Peak2D.html#ab875c2479c6cd2a0189e4684bfa4f97d">setIntensity</a>(av_intens);</div>
 
2331
<div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>&#160;      c_feature.<a class="code" href="classOpenMS_1_1Peak2D.html#a396c5ebcac2e70f9b9a478bb2456985b">setRT</a>(av_RT);</div>
 
2332
<div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>&#160;      c_feature.<a class="code" href="classOpenMS_1_1Feature.html#aeba0cded976431f70fbea5499218ce18">setOverallQuality</a>(av_score);</div>
 
2333
<div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>&#160;      feature_map.push_back(c_feature);</div>
 
2334
<div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>&#160;    }</div>
 
2335
<div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>&#160;</div>
 
2336
<div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>&#160;    <span class="keywordflow">return</span> feature_map;</div>
 
2337
<div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>&#160;  }</div>
 
2338
<div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>&#160;</div>
 
2339
<div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
2340
<div class="line"><a name="l02496"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a1e3cf387f84e90b6b499102c4d1f6a8e"> 2496</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a0cddf185d4cd401acef976e6798ab7c0">IsotopeWaveletTransform&lt;PeakType&gt;::checkPositionForPlausibility_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; candidate,</div>
 
2341
<div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>&#160;                                                                        <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; ref, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> seed_mz, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> c, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> scan_index, <span class="keyword">const</span> <span class="keywordtype">bool</span> check_PPMs, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> transintens, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> prev_score)</div>
 
2342
<div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>&#160;  {</div>
 
2343
<div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>&#160;    <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;::const_iterator</a> iter, ref_iter;</div>
 
2344
<div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>&#160;    <a class="code" href="classunsigned_01int.html">UInt</a> peak_cutoff;</div>
 
2345
<div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>&#160;    peak_cutoff = <a class="code" href="classOpenMS_1_1IsotopeWavelet.html#a4ed32478c0f092c6507b7fa4c7539c9a">IsotopeWavelet::getNumPeakCutOff</a>(seed_mz, c + 1);</div>
 
2346
<div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>&#160;</div>
 
2347
<div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>&#160;    iter = candidate.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a808327302a2ba3fb630ea132d32db942">MZBegin</a>(seed_mz);</div>
 
2348
<div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>&#160;    <span class="comment">//we can ignore those cases</span></div>
 
2349
<div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>&#160;    <span class="keywordflow">if</span> (iter == candidate.begin() || iter == candidate.end())</div>
 
2350
<div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>&#160;    {</div>
 
2351
<div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
 
2352
<div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>&#160;    }</div>
 
2353
<div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>&#160;</div>
 
2354
<div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>&#160;    std::pair&lt;DoubleReal, DoubleReal&gt; reals;</div>
 
2355
<div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>&#160;    ref_iter =  ref.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a808327302a2ba3fb630ea132d32db942">MZBegin</a>(seed_mz);</div>
 
2356
<div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>&#160;    <span class="comment">//Correct the position</span></div>
 
2357
<div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> real_mz, real_intens;</div>
 
2358
<div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>&#160;    <span class="keywordflow">if</span> (check_PPMs)</div>
 
2359
<div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>&#160;    {</div>
 
2360
<div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>&#160;      reals = checkPPMTheoModel_(ref, iter-&gt;getMZ(), <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>);</div>
 
2361
<div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>&#160;      real_mz = reals.first, real_intens = reals.second;</div>
 
2362
<div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>&#160;      <span class="comment">//if (real_mz &lt;= 0 || real_intens &lt;= 0)</span></div>
 
2363
<div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>&#160;      <span class="comment">//{</span></div>
 
2364
<div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>&#160;      <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;::const_iterator</a> h_iter = ref_iter, hc_iter = ref_iter;</div>
 
2365
<div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>&#160;      <span class="keywordflow">while</span> (h_iter != ref.begin())</div>
 
2366
<div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>&#160;      {</div>
 
2367
<div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>&#160;        --h_iter;</div>
 
2368
<div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>&#160;        <span class="keywordflow">if</span> (h_iter-&gt;getIntensity() &gt; hc_iter-&gt;getIntensity() || (h_iter-&gt;getIntensity() == hc_iter-&gt;getIntensity() &amp;&amp; hc_iter-&gt;getIntensity() == 0))</div>
 
2369
<div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>&#160;        {</div>
 
2370
<div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>&#160;          hc_iter = h_iter;</div>
 
2371
<div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>&#160;        }</div>
 
2372
<div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>&#160;        <span class="keywordflow">else</span></div>
 
2373
<div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>&#160;        {</div>
 
2374
<div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>&#160;          <span class="keywordflow">break</span>;</div>
 
2375
<div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>&#160;        }</div>
 
2376
<div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>&#160;</div>
 
2377
<div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>&#160;        <span class="keywordflow">if</span> (seed_mz - h_iter-&gt;getMZ() &gt; <a class="code" href="namespaceOpenMS_1_1Constants.html#afb04ba9e1308cbbaa20a944f0ab124af">Constants::IW_QUARTER_NEUTRON_MASS</a> / (c + 1.))</div>
 
2378
<div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>&#160;        {</div>
 
2379
<div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>&#160;          <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
 
2380
<div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>&#160;        }</div>
 
2381
<div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>&#160;      }</div>
 
2382
<div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>&#160;      reals = checkPPMTheoModel_(ref, h_iter-&gt;getMZ(), <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>);</div>
 
2383
<div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>&#160;      real_mz = reals.first, real_intens = reals.second;</div>
 
2384
<div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>&#160;      <span class="keywordflow">if</span> (real_mz &lt;= 0 || real_intens &lt;= 0)</div>
 
2385
<div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>&#160;      {</div>
 
2386
<div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
 
2387
<div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>&#160;      }</div>
 
2388
<div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>&#160;      real_mz = h_iter-&gt;getMZ();</div>
 
2389
<div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>&#160;      real_intens = h_iter-&gt;getIntensity();</div>
 
2390
<div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>&#160;      <span class="comment">//}</span></div>
 
2391
<div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>&#160;    }</div>
 
2392
<div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>&#160;    <span class="keywordflow">else</span></div>
 
2393
<div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>&#160;    {</div>
 
2394
<div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>&#160;      reals = std::pair&lt;DoubleReal, DoubleReal&gt;(seed_mz, ref_iter-&gt;getIntensity());</div>
 
2395
<div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>&#160;      real_mz = reals.first, real_intens = reals.second;</div>
 
2396
<div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>&#160;</div>
 
2397
<div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>&#160;      <span class="keywordflow">if</span> (real_mz &lt;= 0 || real_intens &lt;= 0)</div>
 
2398
<div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>&#160;      {</div>
 
2399
<div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>&#160;        <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;::const_iterator</a> h_iter = ref_iter, hc_iter = ref_iter;</div>
 
2400
<div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>&#160;        <span class="keywordflow">while</span> (h_iter != ref.begin())</div>
 
2401
<div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>&#160;        {</div>
 
2402
<div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>&#160;          --h_iter;</div>
 
2403
<div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>&#160;          <span class="keywordflow">if</span> (h_iter-&gt;getIntensity() &gt; hc_iter-&gt;getIntensity() || (h_iter-&gt;getIntensity() == hc_iter-&gt;getIntensity() &amp;&amp; hc_iter-&gt;getIntensity() == 0))</div>
 
2404
<div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>&#160;          {</div>
 
2405
<div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>&#160;            hc_iter = h_iter;</div>
 
2406
<div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>&#160;          }</div>
 
2407
<div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>&#160;          <span class="keywordflow">else</span></div>
 
2408
<div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>&#160;          {</div>
 
2409
<div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>&#160;            <span class="keywordflow">break</span>;</div>
 
2410
<div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>&#160;          }</div>
 
2411
<div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>&#160;</div>
 
2412
<div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>&#160;          <span class="keywordflow">if</span> (seed_mz - h_iter-&gt;getMZ() &gt; <a class="code" href="namespaceOpenMS_1_1Constants.html#afb04ba9e1308cbbaa20a944f0ab124af">Constants::IW_QUARTER_NEUTRON_MASS</a> / (c + 1.))</div>
 
2413
<div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>&#160;          {</div>
 
2414
<div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
 
2415
<div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>&#160;          }</div>
 
2416
<div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>&#160;        }</div>
 
2417
<div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>&#160;        real_mz = h_iter-&gt;getMZ(), real_intens = h_iter-&gt;getIntensity();</div>
 
2418
<div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>&#160;        <span class="keywordflow">if</span> (real_mz &lt;= 0 || real_intens &lt;= 0)</div>
 
2419
<div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>&#160;        {</div>
 
2420
<div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>&#160;          <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
 
2421
<div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>&#160;        }</div>
 
2422
<div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>&#160;        real_mz = h_iter-&gt;getMZ();</div>
 
2423
<div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>&#160;        real_intens = h_iter-&gt;getIntensity();</div>
 
2424
<div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>&#160;      }</div>
 
2425
<div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>&#160;    }</div>
 
2426
<div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>&#160;</div>
 
2427
<div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> c_score = scoreThis_(candidate, peak_cutoff, real_mz, c, 0);</div>
 
2428
<div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>&#160;</div>
 
2429
<div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>&#160;    <span class="keywordflow">if</span> (c_score &lt;= 0)</div>
 
2430
<div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>&#160;    {</div>
 
2431
<div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
 
2432
<div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>&#160;    }</div>
 
2433
<div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>&#160;</div>
 
2434
<div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> mz_cutoff = <a class="code" href="classOpenMS_1_1IsotopeWavelet.html#aa4c1055469be0ca451cdaef1514d3981">IsotopeWavelet::getMzPeakCutOffAtMonoPos</a>(real_mz, c + 1);</div>
 
2435
<div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>&#160;    <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;::const_iterator</a> real_l_MZ_iter = ref.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a808327302a2ba3fb630ea132d32db942">MZBegin</a>(real_mz - <a class="code" href="namespaceOpenMS_1_1Constants.html#afb04ba9e1308cbbaa20a944f0ab124af">Constants::IW_QUARTER_NEUTRON_MASS</a> / (c + 1.));</div>
 
2436
<div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>&#160;    <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;::const_iterator</a> real_r_MZ_iter = ref.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a808327302a2ba3fb630ea132d32db942">MZBegin</a>(real_l_MZ_iter, real_mz + mz_cutoff / (c + 1.), ref.end());</div>
 
2437
<div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>&#160;    <span class="keywordflow">if</span> (real_r_MZ_iter == ref.end())</div>
 
2438
<div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>&#160;    {</div>
 
2439
<div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>&#160;      --real_r_MZ_iter;</div>
 
2440
<div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>&#160;    }</div>
 
2441
<div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>&#160;</div>
 
2442
<div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>&#160;</div>
 
2443
<div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>&#160;    <a class="code" href="classunsigned_01int.html">UInt</a> real_mz_begin = distance(ref.begin(), real_l_MZ_iter);</div>
 
2444
<div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>&#160;    <a class="code" href="classunsigned_01int.html">UInt</a> real_mz_end = distance(ref.begin(), real_r_MZ_iter);</div>
 
2445
<div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>&#160;</div>
 
2446
<div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>&#160;    <span class="keywordflow">if</span> (prev_score == -1000)</div>
 
2447
<div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>&#160;    {</div>
 
2448
<div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>&#160;      push2Box_(real_mz, scan_index, c, prev_score, transintens, ref.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a3da529bd3240fa0d7148484bbef0b9d7">getRT</a>(), real_mz_begin, real_mz_end, real_intens);</div>
 
2449
<div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>&#160;    }</div>
 
2450
<div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>&#160;    <span class="keywordflow">else</span></div>
 
2451
<div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>&#160;    {</div>
 
2452
<div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>&#160;      push2Box_(real_mz, scan_index, c, c_score, transintens, ref.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a3da529bd3240fa0d7148484bbef0b9d7">getRT</a>(), real_mz_begin, real_mz_end, real_intens);</div>
 
2453
<div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>&#160;    }</div>
 
2454
<div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
 
2455
<div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>&#160;  }</div>
 
2456
<div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>&#160;</div>
 
2457
<div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
2458
<div class="line"><a name="l02614"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a0cddf185d4cd401acef976e6798ab7c0"> 2614</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a0cddf185d4cd401acef976e6798ab7c0">IsotopeWaveletTransform&lt;PeakType&gt;::checkPositionForPlausibility_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html">TransSpectrum</a>&amp; candidate,</div>
 
2459
<div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>&#160;                                                                        <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; ref, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> seed_mz, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> c, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> scan_index, <span class="keyword">const</span> <span class="keywordtype">bool</span> check_PPMs, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> transintens, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> prev_score)</div>
 
2460
<div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>&#160;  {</div>
 
2461
<div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>&#160;    <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;::const_iterator</a> iter, ref_iter;</div>
 
2462
<div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>&#160;    <a class="code" href="classunsigned_01int.html">UInt</a> peak_cutoff;</div>
 
2463
<div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>&#160;    peak_cutoff = <a class="code" href="classOpenMS_1_1IsotopeWavelet.html#a4ed32478c0f092c6507b7fa4c7539c9a">IsotopeWavelet::getNumPeakCutOff</a>(seed_mz, c + 1);</div>
 
2464
<div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>&#160;</div>
 
2465
<div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>&#160;    iter = candidate.<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a2cf06f0f5a8cbfc86220b92424d4552b">MZBegin</a>(seed_mz);</div>
 
2466
<div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>&#160;    <span class="comment">//we can ignore those cases</span></div>
 
2467
<div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>&#160;    <span class="keywordflow">if</span> (iter == candidate.<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#aef6a8bdc8ceaf79040c262392dae689d">begin</a>() || iter == candidate.<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#ac01116b96e6716e6ba815e6098478a1b">end</a>())</div>
 
2468
<div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>&#160;    {</div>
 
2469
<div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
 
2470
<div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>&#160;    }</div>
 
2471
<div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>&#160;</div>
 
2472
<div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>&#160;    std::pair&lt;DoubleReal, DoubleReal&gt; reals;</div>
 
2473
<div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>&#160;    ref_iter =  ref.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a808327302a2ba3fb630ea132d32db942">MZBegin</a>(seed_mz);</div>
 
2474
<div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>&#160;    <span class="comment">//Correct the position</span></div>
 
2475
<div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> real_mz, real_intens;</div>
 
2476
<div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>&#160;    <span class="keywordflow">if</span> (check_PPMs)</div>
 
2477
<div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>&#160;    {</div>
 
2478
<div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>&#160;      reals = checkPPMTheoModel_(ref, iter-&gt;getMZ(), <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>);</div>
 
2479
<div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>&#160;      real_mz = reals.first, real_intens = reals.second;</div>
 
2480
<div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>&#160;      <span class="comment">//if (real_mz &lt;= 0 || real_intens &lt;= 0)</span></div>
 
2481
<div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>&#160;      <span class="comment">//{</span></div>
 
2482
<div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>&#160;      <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;::const_iterator</a> h_iter = ref_iter, hc_iter = ref_iter;</div>
 
2483
<div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>&#160;      <span class="keywordflow">while</span> (h_iter != ref.begin())</div>
 
2484
<div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>&#160;      {</div>
 
2485
<div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>&#160;        --h_iter;</div>
 
2486
<div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>&#160;        <span class="keywordflow">if</span> (h_iter-&gt;getIntensity() &gt; hc_iter-&gt;getIntensity() || (h_iter-&gt;getIntensity() == hc_iter-&gt;getIntensity() &amp;&amp; hc_iter-&gt;getIntensity() == 0))</div>
 
2487
<div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>&#160;        {</div>
 
2488
<div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>&#160;          hc_iter = h_iter;</div>
 
2489
<div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>&#160;        }</div>
 
2490
<div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>&#160;        <span class="keywordflow">else</span></div>
 
2491
<div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>&#160;        {</div>
 
2492
<div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>&#160;          <span class="keywordflow">break</span>;</div>
 
2493
<div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>&#160;        }</div>
 
2494
<div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>&#160;</div>
 
2495
<div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>&#160;        <span class="keywordflow">if</span> (seed_mz - h_iter-&gt;getMZ() &gt; <a class="code" href="namespaceOpenMS_1_1Constants.html#afb04ba9e1308cbbaa20a944f0ab124af">Constants::IW_QUARTER_NEUTRON_MASS</a> / (c + 1.))</div>
 
2496
<div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>&#160;        {</div>
 
2497
<div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>&#160;          <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
 
2498
<div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>&#160;        }</div>
 
2499
<div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>&#160;      }</div>
 
2500
<div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>&#160;      ++h_iter;</div>
 
2501
<div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>&#160;      reals = checkPPMTheoModel_(ref, h_iter-&gt;getMZ(), <a class="code" href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">c</a>);</div>
 
2502
<div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>&#160;      real_mz = reals.first, real_intens = reals.second;</div>
 
2503
<div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>&#160;</div>
 
2504
<div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
2505
<div class="line"><a name="l02661"></a><span class="lineno"> 2661</span>&#160;<span class="preprocessor"></span>      std::cout &lt;&lt; <span class="stringliteral">&quot;Plausibility check old_mz: &quot;</span> &lt;&lt; iter-&gt;getMZ() &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; real_mz &lt;&lt; std::endl;</div>
 
2506
<div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>&#160;<span class="preprocessor">#endif</span></div>
 
2507
<div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>&#160;<span class="preprocessor"></span></div>
 
2508
<div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>&#160;      <span class="keywordflow">if</span> (real_mz &lt;= 0 || real_intens &lt;= 0)</div>
 
2509
<div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>&#160;      {</div>
 
2510
<div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
 
2511
<div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>&#160;      }</div>
 
2512
<div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>&#160;      real_mz = h_iter-&gt;getMZ();</div>
 
2513
<div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>&#160;      real_intens = h_iter-&gt;getIntensity();</div>
 
2514
<div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>&#160;      <span class="comment">//}</span></div>
 
2515
<div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>&#160;    }</div>
 
2516
<div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>&#160;    <span class="keywordflow">else</span></div>
 
2517
<div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>&#160;    {</div>
 
2518
<div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>&#160;      reals = std::pair&lt;DoubleReal, DoubleReal&gt;(seed_mz, ref_iter-&gt;getIntensity());</div>
 
2519
<div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>&#160;      real_mz = reals.first, real_intens = reals.second;</div>
 
2520
<div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>&#160;</div>
 
2521
<div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>&#160;      <span class="keywordflow">if</span> (real_mz &lt;= 0 || real_intens &lt;= 0)</div>
 
2522
<div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>&#160;      {</div>
 
2523
<div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>&#160;        <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;::const_iterator</a> h_iter = ref_iter, hc_iter = ref_iter;</div>
 
2524
<div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>&#160;        <span class="keywordflow">while</span> (h_iter != ref.begin())</div>
 
2525
<div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>&#160;        {</div>
 
2526
<div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>&#160;          --h_iter;</div>
 
2527
<div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>&#160;          <span class="keywordflow">if</span> (h_iter-&gt;getIntensity() &gt; hc_iter-&gt;getIntensity() || (h_iter-&gt;getIntensity() == hc_iter-&gt;getIntensity() &amp;&amp; hc_iter-&gt;getIntensity() == 0))</div>
 
2528
<div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>&#160;          {</div>
 
2529
<div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>&#160;            hc_iter = h_iter;</div>
 
2530
<div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>&#160;          }</div>
 
2531
<div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>&#160;          <span class="keywordflow">else</span></div>
 
2532
<div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>&#160;          {</div>
 
2533
<div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>&#160;            <span class="keywordflow">break</span>;</div>
 
2534
<div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>&#160;          }</div>
 
2535
<div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>&#160;</div>
 
2536
<div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>&#160;          <span class="keywordflow">if</span> (seed_mz - h_iter-&gt;getMZ() &gt; <a class="code" href="namespaceOpenMS_1_1Constants.html#afb04ba9e1308cbbaa20a944f0ab124af">Constants::IW_QUARTER_NEUTRON_MASS</a> / (c + 1.))</div>
 
2537
<div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>&#160;          {</div>
 
2538
<div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
 
2539
<div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>&#160;          }</div>
 
2540
<div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>&#160;        }</div>
 
2541
<div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>&#160;        real_mz = h_iter-&gt;getMZ(), real_intens = h_iter-&gt;getIntensity();</div>
 
2542
<div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>&#160;        <span class="keywordflow">if</span> (real_mz &lt;= 0 || real_intens &lt;= 0)</div>
 
2543
<div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>&#160;        {</div>
 
2544
<div class="line"><a name="l02700"></a><span class="lineno"> 2700</span>&#160;          <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
 
2545
<div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>&#160;        }</div>
 
2546
<div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>&#160;        real_mz = h_iter-&gt;getMZ();</div>
 
2547
<div class="line"><a name="l02703"></a><span class="lineno"> 2703</span>&#160;        real_intens = h_iter-&gt;getIntensity();</div>
 
2548
<div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>&#160;      }</div>
 
2549
<div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>&#160;    }</div>
 
2550
<div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>&#160;</div>
 
2551
<div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> c_score = scoreThis_(candidate, peak_cutoff, real_mz, c, 0);</div>
 
2552
<div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>&#160;</div>
 
2553
<div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>&#160;    <span class="keywordflow">if</span> (c_score &lt;= 0)</div>
 
2554
<div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>&#160;    {</div>
 
2555
<div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
 
2556
<div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>&#160;    }</div>
 
2557
<div class="line"><a name="l02713"></a><span class="lineno"> 2713</span>&#160;</div>
 
2558
<div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> mz_cutoff = <a class="code" href="classOpenMS_1_1IsotopeWavelet.html#aa4c1055469be0ca451cdaef1514d3981">IsotopeWavelet::getMzPeakCutOffAtMonoPos</a>(real_mz, c + 1);</div>
 
2559
<div class="line"><a name="l02715"></a><span class="lineno"> 2715</span>&#160;    <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;::const_iterator</a> real_l_MZ_iter = ref.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a808327302a2ba3fb630ea132d32db942">MZBegin</a>(real_mz - <a class="code" href="namespaceOpenMS_1_1Constants.html#afb04ba9e1308cbbaa20a944f0ab124af">Constants::IW_QUARTER_NEUTRON_MASS</a> / (c + 1.));</div>
 
2560
<div class="line"><a name="l02716"></a><span class="lineno"> 2716</span>&#160;    <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;::const_iterator</a> real_r_MZ_iter = ref.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a808327302a2ba3fb630ea132d32db942">MZBegin</a>(real_l_MZ_iter, real_mz + mz_cutoff / (c + 1.), ref.end());</div>
 
2561
<div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>&#160;    <span class="keywordflow">if</span> (real_r_MZ_iter == ref.end())</div>
 
2562
<div class="line"><a name="l02718"></a><span class="lineno"> 2718</span>&#160;    {</div>
 
2563
<div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>&#160;      --real_r_MZ_iter;</div>
 
2564
<div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>&#160;    }</div>
 
2565
<div class="line"><a name="l02721"></a><span class="lineno"> 2721</span>&#160;</div>
 
2566
<div class="line"><a name="l02722"></a><span class="lineno"> 2722</span>&#160;</div>
 
2567
<div class="line"><a name="l02723"></a><span class="lineno"> 2723</span>&#160;    <a class="code" href="classunsigned_01int.html">UInt</a> real_mz_begin = distance(ref.begin(), real_l_MZ_iter);</div>
 
2568
<div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>&#160;    <a class="code" href="classunsigned_01int.html">UInt</a> real_mz_end = distance(ref.begin(), real_r_MZ_iter);</div>
 
2569
<div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>&#160;</div>
 
2570
<div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>&#160;    <span class="keywordflow">if</span> (prev_score == -1000)</div>
 
2571
<div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>&#160;    {</div>
 
2572
<div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>&#160;      push2Box_(real_mz, scan_index, c, prev_score, transintens, ref.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a3da529bd3240fa0d7148484bbef0b9d7">getRT</a>(), real_mz_begin, real_mz_end, real_intens);</div>
 
2573
<div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>&#160;    }</div>
 
2574
<div class="line"><a name="l02730"></a><span class="lineno"> 2730</span>&#160;    <span class="keywordflow">else</span></div>
 
2575
<div class="line"><a name="l02731"></a><span class="lineno"> 2731</span>&#160;    {</div>
 
2576
<div class="line"><a name="l02732"></a><span class="lineno"> 2732</span>&#160;      push2Box_(real_mz, scan_index, c, c_score, transintens, ref.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a3da529bd3240fa0d7148484bbef0b9d7">getRT</a>(), real_mz_begin, real_mz_end, real_intens);</div>
 
2577
<div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>&#160;    }</div>
 
2578
<div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>&#160;</div>
 
2579
<div class="line"><a name="l02735"></a><span class="lineno"> 2735</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
 
2580
<div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>&#160;  }</div>
 
2581
<div class="line"><a name="l02737"></a><span class="lineno"> 2737</span>&#160;</div>
 
2582
<div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> PeakType&gt;</div>
 
2583
<div class="line"><a name="l02739"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a750c0f353f03bb3361b276497b2c216b"> 2739</a></span>&#160;  std::pair&lt;DoubleReal, DoubleReal&gt; <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a750c0f353f03bb3361b276497b2c216b">IsotopeWaveletTransform&lt;PeakType&gt;::checkPPMTheoModel_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum&lt;PeakType&gt;</a>&amp; ref, <span class="keyword">const</span> <a class="code" href="classdouble.html">DoubleReal</a> c_mz, <span class="keyword">const</span> <a class="code" href="classunsigned_01int.html">UInt</a> c)</div>
 
2584
<div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>&#160;  {</div>
 
2585
<div class="line"><a name="l02741"></a><span class="lineno"> 2741</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> mass = c_mz * (c + 1) - <a class="code" href="namespaceOpenMS_1_1Constants.html#a05ad944451fd77ab1fd87164c2eddd13">Constants::IW_PROTON_MASS</a> * (c);</div>
 
2586
<div class="line"><a name="l02742"></a><span class="lineno"> 2742</span>&#160;    <a class="code" href="classdouble.html">DoubleReal</a> ppms = getPPMs_(peptideMassRule_(mass), mass);</div>
 
2587
<div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>&#160;    <span class="keywordflow">if</span> (ppms &gt;= <a class="code" href="namespaceOpenMS_1_1Constants.html#a9aef51de751f86746b314c668d9e535a">Constants::PEPTIDE_MASS_RULE_THEO_PPM_BOUND</a>)</div>
 
2588
<div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>&#160;    {</div>
 
2589
<div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
2590
<div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>&#160;<span class="preprocessor"></span>      std::cout &lt;&lt; ::std::setprecision(8) &lt;&lt; std::fixed &lt;&lt; c_mz &lt;&lt; <span class="stringliteral">&quot;\t =(&quot;</span> &lt;&lt; <span class="stringliteral">&quot;ISO_WAVE&quot;</span> &lt;&lt; <span class="stringliteral">&quot;)&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;REJECT \t&quot;</span> &lt;&lt; ppms &lt;&lt; <span class="stringliteral">&quot; (rule: &quot;</span> &lt;&lt; peptideMassRule_(mass) &lt;&lt; <span class="stringliteral">&quot; got: &quot;</span> &lt;&lt; mass &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; std::endl;</div>
 
2591
<div class="line"><a name="l02747"></a><span class="lineno"> 2747</span>&#160;<span class="preprocessor">#endif</span></div>
 
2592
<div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>&#160;<span class="preprocessor"></span>      <span class="keywordflow">return</span> std::pair&lt;DoubleReal, DoubleReal&gt;(-1, -1);</div>
 
2593
<div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>&#160;    }</div>
 
2594
<div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>&#160;</div>
 
2595
<div class="line"><a name="l02751"></a><span class="lineno"> 2751</span>&#160;<span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
 
2596
<div class="line"><a name="l02752"></a><span class="lineno"> 2752</span>&#160;<span class="preprocessor"></span>    std::cout &lt;&lt; ::std::setprecision(8) &lt;&lt; std::fixed &lt;&lt; c_mz &lt;&lt; <span class="stringliteral">&quot;\t =(&quot;</span> &lt;&lt; <span class="stringliteral">&quot;ISO_WAVE&quot;</span> &lt;&lt; <span class="stringliteral">&quot;)&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;ACCEPT \t&quot;</span> &lt;&lt; ppms &lt;&lt; <span class="stringliteral">&quot; (rule: &quot;</span> &lt;&lt; peptideMassRule_(mass) &lt;&lt; <span class="stringliteral">&quot; got: &quot;</span> &lt;&lt; mass &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; std::endl;</div>
 
2597
<div class="line"><a name="l02753"></a><span class="lineno"> 2753</span>&#160;<span class="preprocessor">#endif</span></div>
 
2598
<div class="line"><a name="l02754"></a><span class="lineno"> 2754</span>&#160;<span class="preprocessor"></span>    <span class="keywordflow">return</span> std::pair&lt;DoubleReal, DoubleReal&gt;(c_mz, ref.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a808327302a2ba3fb630ea132d32db942">MZBegin</a>(c_mz)-&gt;getIntensity());</div>
 
2599
<div class="line"><a name="l02755"></a><span class="lineno"> 2755</span>&#160;  }</div>
 
2600
<div class="line"><a name="l02756"></a><span class="lineno"> 2756</span>&#160;</div>
 
2601
<div class="line"><a name="l02757"></a><span class="lineno"> 2757</span>&#160;} <span class="comment">//namespace</span></div>
 
2602
<div class="line"><a name="l02758"></a><span class="lineno"> 2758</span>&#160;</div>
 
2603
<div class="line"><a name="l02759"></a><span class="lineno"> 2759</span>&#160;<span class="preprocessor">#endif</span></div>
 
2604
<div class="ttc" id="classOpenMS_1_1IsotopeWavelet_html_a93ce8c24484a3faef662be1bc3ccbeca"><div class="ttname"><a href="classOpenMS_1_1IsotopeWavelet.html#a93ce8c24484a3faef662be1bc3ccbeca">OpenMS::IsotopeWavelet::getLambdaL</a></div><div class="ttdeci">static DoubleReal getLambdaL(const DoubleReal m)</div><div class="ttdoc">Returns the mass-parameter lambda (linear fit). </div></div>
 
2605
<div class="ttc" id="namespaceOpenMS_1_1Constants_html_a53aae8780a5fb5cca0b69ece3f1c226c"><div class="ttname"><a href="namespaceOpenMS_1_1Constants.html#a53aae8780a5fb5cca0b69ece3f1c226c">OpenMS::Constants::CUDA_INIT_SUCCESS</a></div><div class="ttdeci">const int CUDA_INIT_SUCCESS</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletConstants.h:92</div></div>
 
2606
<div class="ttc" id="classunsigned_01int_html"><div class="ttname"><a href="classunsigned_01int.html">unsigned int</a></div></div>
 
2607
<div class="ttc" id="classOpenMS_1_1cudaHelp_html_a6ff4b770948f39e585fb6802491c94ad"><div class="ttname"><a href="classOpenMS_1_1cudaHelp.html#a6ff4b770948f39e585fb6802491c94ad">OpenMS::cudaHelp::getMZ</a></div><div class="ttdeci">float getMZ()</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:72</div></div>
 
2608
<div class="ttc" id="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement_html_ad5ef9efd3868aea52362ff6823edf99a"><div class="ttname"><a href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#ad5ef9efd3868aea52362ff6823edf99a">OpenMS::IsotopeWaveletTransform::BoxElement::MZ_end</a></div><div class="ttdeci">UInt MZ_end</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:103</div></div>
 
2609
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a12db861a7fd5db1a8aea9e6c4a403a89"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a12db861a7fd5db1a8aea9e6c4a403a89">OpenMS::IsotopeWaveletTransform::mapSeeds2Features</a></div><div class="ttdeci">FeatureMap&lt; Feature &gt; mapSeeds2Features(const MSExperiment&lt; PeakType &gt; &amp;map, const UInt RT_votes_cutoff)</div><div class="ttdoc">Filters the candidates further more and maps the internally used data structures to the OpenMS framew...</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:2313</div></div>
 
2610
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a54c204f5b2d6a44874df21661e992224"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a54c204f5b2d6a44874df21661e992224">OpenMS::IsotopeWaveletTransform::getTransform</a></div><div class="ttdeci">virtual void getTransform(MSSpectrum&lt; PeakType &gt; &amp;c_trans, const MSSpectrum&lt; PeakType &gt; &amp;c_ref, const UInt c)</div><div class="ttdoc">Computes the isotope wavelet transform of charge state c. </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:693</div></div>
 
2611
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum_html_a0b49c03b6407c082e4a26ede3126783b"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a0b49c03b6407c082e4a26ede3126783b">OpenMS::IsotopeWaveletTransform::TransSpectrum::getRefSpectrum</a></div><div class="ttdeci">const MSSpectrum&lt; PeakType &gt; * getRefSpectrum() const </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:188</div></div>
 
2612
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_ade38c945f9f72617b16d2ffeb72a27cd"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#ade38c945f9f72617b16d2ffeb72a27cd">OpenMS::IsotopeWaveletTransform::mergeFeatures</a></div><div class="ttdeci">void mergeFeatures(IsotopeWaveletTransform&lt; PeakType &gt; *later_iwt, const UInt RT_interleave, const UInt RT_votes_cutoff)</div></div>
 
2613
<div class="ttc" id="IsotopeWaveletCudaKernel_8h_html"><div class="ttname"><a href="IsotopeWaveletCudaKernel_8h.html">IsotopeWaveletCudaKernel.h</a></div></div>
 
2614
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a2b50707910bf9a7c8d94a2bf81aedeb8"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a2b50707910bf9a7c8d94a2bf81aedeb8">OpenMS::IsotopeWaveletTransform::getLinearInterpolation</a></div><div class="ttdeci">DoubleReal getLinearInterpolation(const DoubleReal mz_a, const DoubleReal intens_a, const DoubleReal mz_pos, const DoubleReal mz_b, const DoubleReal intens_b)</div><div class="ttdoc">Computes a linear (intensity) interpolation. </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:353</div></div>
 
2615
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum_html_a388d3f21c5c30e6d755c384aa5351e58"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a388d3f21c5c30e6d755c384aa5351e58">OpenMS::IsotopeWaveletTransform::TransSpectrum::setTransIntensity</a></div><div class="ttdeci">void setTransIntensity(const UInt i, const DoubleReal intens)</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:170</div></div>
 
2616
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_abe3442014d1b490291efebca5d69bf6d"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#abe3442014d1b490291efebca5d69bf6d">OpenMS::IsotopeWaveletTransform::push2Box_</a></div><div class="ttdeci">virtual void push2Box_(const DoubleReal mz, const UInt scan, UInt c, const DoubleReal score, const DoubleReal intens, const DoubleReal rt, const UInt MZ_begin, const UInt MZ_end, const DoubleReal ref_intens)</div><div class="ttdoc">Inserts a potential isotopic pattern into an open box or - if no such box exists - creates a new one...</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:1818</div></div>
 
2617
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_ae6ec89cd7c5c47a0fe5b6e15514aa2f2"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#ae6ec89cd7c5c47a0fe5b6e15514aa2f2">OpenMS::IsotopeWaveletTransform::max_num_peaks_per_pattern_</a></div><div class="ttdeci">UInt max_num_peaks_per_pattern_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:542</div></div>
 
2618
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum_html_aed2d208f4d304cc6def0a15b73f115bf"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#aed2d208f4d304cc6def0a15b73f115bf">OpenMS::IsotopeWaveletTransform::TransSpectrum::destroy</a></div><div class="ttdeci">virtual void destroy()</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:137</div></div>
 
2619
<div class="ttc" id="classOpenMS_1_1String_html"><div class="ttname"><a href="classOpenMS_1_1String.html">OpenMS::String</a></div><div class="ttdoc">A more convenient string class. </div><div class="ttdef"><b>Definition:</b> String.h:56</div></div>
 
2620
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum_html_a59d6ba42b6d033cc57667a4e7db9f283"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a59d6ba42b6d033cc57667a4e7db9f283">OpenMS::IsotopeWaveletTransform::TransSpectrum::TransSpectrum</a></div><div class="ttdeci">TransSpectrum(const MSSpectrum&lt; PeakType &gt; *reference)</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:125</div></div>
 
2621
<div class="ttc" id="namespaceOpenMS_html_a66e95a71cb612182234eb778d0a2b83c"><div class="ttname"><a href="namespaceOpenMS.html#a66e95a71cb612182234eb778d0a2b83c">OpenMS::intensityPointerComparator</a></div><div class="ttdeci">bool intensityPointerComparator(PeakType *a, PeakType *b)</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:585</div></div>
 
2622
<div class="ttc" id="classOpenMS_1_1Peak2D_html"><div class="ttname"><a href="classOpenMS_1_1Peak2D.html">OpenMS::Peak2D</a></div><div class="ttdoc">A 2-dimensional raw data point or peak. </div><div class="ttdef"><b>Definition:</b> Peak2D.h:55</div></div>
 
2623
<div class="ttc" id="classOpenMS_1_1MSExperiment_html_a9d78a687cf2a391198bb3cbc08bc06cb"><div class="ttname"><a href="classOpenMS_1_1MSExperiment.html#a9d78a687cf2a391198bb3cbc08bc06cb">OpenMS::MSExperiment::size</a></div><div class="ttdeci">Size size() const </div><div class="ttdef"><b>Definition:</b> MSExperiment.h:117</div></div>
 
2624
<div class="ttc" id="classOpenMS_1_1Peak2D_html_a2694f0775c46d9076355cb85d9815425"><div class="ttname"><a href="classOpenMS_1_1Peak2D.html#a2694f0775c46d9076355cb85d9815425">OpenMS::Peak2D::setMZ</a></div><div class="ttdeci">void setMZ(CoordinateType coordinate)</div><div class="ttdoc">Mutable access to the m/z coordinate (index 1) </div><div class="ttdef"><b>Definition:</b> Peak2D.h:197</div></div>
 
2625
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a7d6c0687da2e98bd202a1b7ada3ca8a4"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a7d6c0687da2e98bd202a1b7ada3ca8a4">OpenMS::IsotopeWaveletTransform::getPPMs_</a></div><div class="ttdeci">DoubleReal getPPMs_(const DoubleReal mass_a, const DoubleReal mass_b) const </div><div class="ttdoc">Returns the parts-per-million deviation of the masses. </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:528</div></div>
 
2626
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_af082d2d0e78145cb7e949f3e6a4d92a7"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#af082d2d0e78145cb7e949f3e6a4d92a7">OpenMS::IsotopeWaveletTransform::hr_data_</a></div><div class="ttdeci">bool hr_data_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:543</div></div>
 
2627
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a36cb8cfcf6198ce6c5a22bab62271248"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a36cb8cfcf6198ce6c5a22bab62271248">OpenMS::IsotopeWaveletTransform::interpol_xs_</a></div><div class="ttdeci">std::vector&lt; DoubleReal &gt; interpol_xs_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:539</div></div>
 
2628
<div class="ttc" id="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement_html_aa2ac7da25c2023e7cf03863e5b907fd9"><div class="ttname"><a href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#aa2ac7da25c2023e7cf03863e5b907fd9">OpenMS::IsotopeWaveletTransform::BoxElement::score</a></div><div class="ttdeci">DoubleReal score</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:97</div></div>
 
2629
<div class="ttc" id="IsotopeWavelet_8h_html"><div class="ttname"><a href="IsotopeWavelet_8h.html">IsotopeWavelet.h</a></div></div>
 
2630
<div class="ttc" id="classOpenMS_1_1IsotopeWavelet_html_aa4c1055469be0ca451cdaef1514d3981"><div class="ttname"><a href="classOpenMS_1_1IsotopeWavelet.html#aa4c1055469be0ca451cdaef1514d3981">OpenMS::IsotopeWavelet::getMzPeakCutOffAtMonoPos</a></div><div class="ttdeci">static UInt getMzPeakCutOffAtMonoPos(const DoubleReal mass, const UInt z)</div></div>
 
2631
<div class="ttc" id="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement_html_ae7800b5f37aa029e53c6776f1952cdc7"><div class="ttname"><a href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#ae7800b5f37aa029e53c6776f1952cdc7">OpenMS::IsotopeWaveletTransform::BoxElement::mz</a></div><div class="ttdeci">DoubleReal mz</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:95</div></div>
 
2632
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum_html_ac01116b96e6716e6ba815e6098478a1b"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#ac01116b96e6716e6ba815e6098478a1b">OpenMS::IsotopeWaveletTransform::TransSpectrum::end</a></div><div class="ttdeci">MSSpectrum&lt; PeakType &gt;::const_iterator end() const </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:209</div></div>
 
2633
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a2114c27baa5da2ed87a4a246ded068f2"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a2114c27baa5da2ed87a4a246ded068f2">OpenMS::IsotopeWaveletTransform::av_MZ_spacing_</a></div><div class="ttdeci">DoubleReal av_MZ_spacing_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:537</div></div>
 
2634
<div class="ttc" id="classOpenMS_1_1Peak2D_html_a09903c7965f8ece31f2c1e07b41ae6dd"><div class="ttname"><a href="classOpenMS_1_1Peak2D.html#a09903c7965f8ece31f2c1e07b41ae6dd">OpenMS::Peak2D::getIntensity</a></div><div class="ttdeci">IntensityType getIntensity() const </div><div class="ttdef"><b>Definition:</b> Peak2D.h:161</div></div>
 
2635
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_aa6e604058ed988f0f108f1d7d446cd56"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#aa6e604058ed988f0f108f1d7d446cd56">OpenMS::IsotopeWaveletTransform::clusterSeeds_</a></div><div class="ttdeci">void clusterSeeds_(const TransSpectrum &amp;candidates, const MSSpectrum&lt; PeakType &gt; &amp;ref, const UInt scan_index, const UInt c, const bool check_PPMs)</div><div class="ttdoc">Clusters the seeds stored by push2TmpBox_. </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:2204</div></div>
 
2636
<div class="ttc" id="namespaceOpenMS_html_aa07b2b496e649f9a8e0e3881088f05ca"><div class="ttname"><a href="namespaceOpenMS.html#aa07b2b496e649f9a8e0e3881088f05ca">OpenMS::myCudaComparator</a></div><div class="ttdeci">bool myCudaComparator(const cudaHelp &amp;a, const cudaHelp &amp;b)</div></div>
 
2637
<div class="ttc" id="namespaceOpenMS_1_1Constants_html_a05ad944451fd77ab1fd87164c2eddd13"><div class="ttname"><a href="namespaceOpenMS_1_1Constants.html#a05ad944451fd77ab1fd87164c2eddd13">OpenMS::Constants::IW_PROTON_MASS</a></div><div class="ttdeci">const double IW_PROTON_MASS</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletConstants.h:70</div></div>
 
2638
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a3a3ea964b68706f89220c6e1f57ea944"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a3a3ea964b68706f89220c6e1f57ea944">OpenMS::IsotopeWaveletTransform::end_boxes_</a></div><div class="ttdeci">std::multimap&lt; DoubleReal, Box &gt; end_boxes_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:534</div></div>
 
2639
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a304e5ec82254e764fd4b290c546dd8f6"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a304e5ec82254e764fd4b290c546dd8f6">OpenMS::IsotopeWaveletTransform::getSigma</a></div><div class="ttdeci">DoubleReal getSigma() const </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:358</div></div>
 
2640
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum_html_aaec90893f90185e17d285be87ace7897"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#aaec90893f90185e17d285be87ace7897">OpenMS::IsotopeWaveletTransform::TransSpectrum::getRefSpectrum</a></div><div class="ttdeci">const MSSpectrum&lt; PeakType &gt; * getRefSpectrum()</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:182</div></div>
 
2641
<div class="ttc" id="classOpenMS_1_1FeatureMap_html"><div class="ttname"><a href="classOpenMS_1_1FeatureMap.html">OpenMS::FeatureMap</a></div><div class="ttdoc">A container for features. </div><div class="ttdef"><b>Definition:</b> FeatureMap.h:111</div></div>
 
2642
<div class="ttc" id="classOpenMS_1_1ConstRefVector_html_a93f1c9f620403aec160d98e83e125502"><div class="ttname"><a href="classOpenMS_1_1ConstRefVector.html#a93f1c9f620403aec160d98e83e125502">OpenMS::ConstRefVector::sortByIntensity</a></div><div class="ttdeci">void sortByIntensity(bool reverse=false)</div><div class="ttdoc">Sorting. </div><div class="ttdef"><b>Definition:</b> ConstRefVector.h:753</div></div>
 
2643
<div class="ttc" id="classInt_html"><div class="ttname"><a href="classInt.html">Int</a></div></div>
 
2644
<div class="ttc" id="group__Concept_html_gaba0996d26f7be2572973245b51852757"><div class="ttname"><a href="group__Concept.html#gaba0996d26f7be2572973245b51852757">OpenMS::UInt</a></div><div class="ttdeci">unsigned int UInt</div><div class="ttdoc">Unsigned integer type. </div><div class="ttdef"><b>Definition:</b> Types.h:92</div></div>
 
2645
<div class="ttc" id="IsotopeWaveletParallelFor_8h_html_a070d2ce7b6bb7e5c05602aa8c308d0c4"><div class="ttname"><a href="IsotopeWaveletParallelFor_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a></div><div class="ttdeci">#define NULL</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletParallelFor.h:41</div></div>
 
2646
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a6ffadd9173c3cabd40cae7de8c119c69"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a6ffadd9173c3cabd40cae7de8c119c69">OpenMS::IsotopeWaveletTransform::getSdIntens_</a></div><div class="ttdeci">DoubleReal getSdIntens_(const TransSpectrum &amp;scan, const DoubleReal mean)</div><div class="ttdoc">Computes the standard deviation (neglecting negative values) of the (transformed) intensities of scan...</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:1803</div></div>
 
2647
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum_html_a3da529bd3240fa0d7148484bbef0b9d7"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a3da529bd3240fa0d7148484bbef0b9d7">OpenMS::IsotopeWaveletTransform::TransSpectrum::getRT</a></div><div class="ttdeci">DoubleReal getRT() const </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:146</div></div>
 
2648
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a3f74bfefcca18d06a467b1bfca206d96"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a3f74bfefcca18d06a467b1bfca206d96">OpenMS::IsotopeWaveletTransform::xs_</a></div><div class="ttdeci">std::vector&lt; DoubleReal &gt; xs_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:538</div></div>
 
2649
<div class="ttc" id="namespaceOpenMS_1_1Constants_html_a7618dd262dddabd33123bb3f434bf8a3"><div class="ttname"><a href="namespaceOpenMS_1_1Constants.html#a7618dd262dddabd33123bb3f434bf8a3">OpenMS::Constants::CUDA_MIN_SORT_SIZE</a></div><div class="ttdeci">const int CUDA_MIN_SORT_SIZE</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletConstants.h:108</div></div>
 
2650
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a351c3421c18beee6793b76530d89c4be"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a351c3421c18beee6793b76530d89c4be">OpenMS::IsotopeWaveletTransform::prod_</a></div><div class="ttdeci">std::vector&lt; DoubleReal &gt; prod_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:538</div></div>
 
2651
<div class="ttc" id="classOpenMS_1_1MSExperiment_html_a2387033802383edbdc95f9bbb12a707e"><div class="ttname"><a href="classOpenMS_1_1MSExperiment.html#a2387033802383edbdc95f9bbb12a707e">OpenMS::MSExperiment::begin</a></div><div class="ttdeci">Iterator begin()</div><div class="ttdef"><b>Definition:</b> MSExperiment.h:147</div></div>
 
2652
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a379c3eee5e9810db05f99c6f27523149"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a379c3eee5e9810db05f99c6f27523149">OpenMS::IsotopeWaveletTransform::max_mz_cutoff_</a></div><div class="ttdeci">DoubleReal max_mz_cutoff_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:549</div></div>
 
2653
<div class="ttc" id="classOpenMS_1_1MSSpectrum_html_add06770712321b6e489bbdbcd123c888"><div class="ttname"><a href="classOpenMS_1_1MSSpectrum.html#add06770712321b6e489bbdbcd123c888">OpenMS::MSSpectrum::MZEnd</a></div><div class="ttdeci">Iterator MZEnd(CoordinateType mz)</div><div class="ttdoc">Binary search for peak range end (returns the past-the-end iterator) </div><div class="ttdef"><b>Definition:</b> MSSpectrum.h:530</div></div>
 
2654
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a14e9251e18d91334c130cace0ce242b2"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a14e9251e18d91334c130cace0ce242b2">OpenMS::IsotopeWaveletTransform::getAvIntens_</a></div><div class="ttdeci">DoubleReal getAvIntens_(const TransSpectrum &amp;scan)</div><div class="ttdoc">Computes the average (transformed) intensity (neglecting negative values) of scan. </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:1789</div></div>
 
2655
<div class="ttc" id="classdouble_html"><div class="ttname"><a href="classdouble.html">double</a></div></div>
 
2656
<div class="ttc" id="group__Concept_html_gae113cb41304c6692c7bf5d0624dc6f0f"><div class="ttname"><a href="group__Concept.html#gae113cb41304c6692c7bf5d0624dc6f0f">OpenMS::SignedSize</a></div><div class="ttdeci">ptrdiff_t SignedSize</div><div class="ttdoc">Signed Size type e.g. used as pointer difference. </div><div class="ttdef"><b>Definition:</b> Types.h:151</div></div>
 
2657
<div class="ttc" id="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement_html_a991a665a859b92931ef2ddccea7d98c5"><div class="ttname"><a href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#a991a665a859b92931ef2ddccea7d98c5">OpenMS::IsotopeWaveletTransform::BoxElement::intens</a></div><div class="ttdeci">DoubleReal intens</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:98</div></div>
 
2658
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a94d3b9a99282c26ecdc056eeaa26fea8"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a94d3b9a99282c26ecdc056eeaa26fea8">OpenMS::IsotopeWaveletTransform::tmp_boxes_</a></div><div class="ttdeci">std::vector&lt; std::multimap&lt; DoubleReal, Box &gt; &gt; * tmp_boxes_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:535</div></div>
 
2659
<div class="ttc" id="classOpenMS_1_1IsotopeWavelet_html_acbf2fce508793c4f12e20327ec887fb4"><div class="ttname"><a href="classOpenMS_1_1IsotopeWavelet.html#acbf2fce508793c4f12e20327ec887fb4">OpenMS::IsotopeWavelet::init</a></div><div class="ttdeci">static IsotopeWavelet * init(const DoubleReal max_m, const UInt max_charge)</div></div>
 
2660
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a6780beba67ab81def140c83860050719"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a6780beba67ab81def140c83860050719">OpenMS::IsotopeWaveletTransform::push2TmpBox_</a></div><div class="ttdeci">virtual void push2TmpBox_(const DoubleReal mz, const UInt scan, UInt charge, const DoubleReal score, const DoubleReal intens, const DoubleReal rt, const UInt MZ_begin, const UInt MZ_end)</div><div class="ttdoc">Essentially the same function as. </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:1924</div></div>
 
2661
<div class="ttc" id="namespaceOpenMS_1_1Constants_html_a8fc6defe4e499b1b9b9c275689e44352"><div class="ttname"><a href="namespaceOpenMS_1_1Constants.html#a8fc6defe4e499b1b9b9c275689e44352">OpenMS::Constants::c</a></div><div class="ttdeci">const double c</div></div>
 
2662
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a0cddf185d4cd401acef976e6798ab7c0"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a0cddf185d4cd401acef976e6798ab7c0">OpenMS::IsotopeWaveletTransform::checkPositionForPlausibility_</a></div><div class="ttdeci">virtual bool checkPositionForPlausibility_(const TransSpectrum &amp;candidate, const MSSpectrum&lt; PeakType &gt; &amp;ref, const DoubleReal seed_mz, const UInt c, const UInt scan_index, const bool check_PPMs, const DoubleReal transintens, const DoubleReal prev_score)</div><div class="ttdoc">A ugly but necessary function to handle &amp;quot;off-by-1-Dalton predictions&amp;quot; due to idiosyncrasies of the da...</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:2614</div></div>
 
2663
<div class="ttc" id="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement_html_afc4478a0397a76fef003746ff45fc201"><div class="ttname"><a href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#afc4478a0397a76fef003746ff45fc201">OpenMS::IsotopeWaveletTransform::BoxElement::RT</a></div><div class="ttdeci">DoubleReal RT</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:100</div></div>
 
2664
<div class="ttc" id="classOpenMS_1_1ConvexHull2D_html"><div class="ttname"><a href="classOpenMS_1_1ConvexHull2D.html">OpenMS::ConvexHull2D</a></div><div class="ttdoc">A 2-dimensional hull representation in [counter]clockwise direction - depending on axis labelling...</div><div class="ttdef"><b>Definition:</b> ConvexHull2D.h:75</div></div>
 
2665
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum_html"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html">OpenMS::IsotopeWaveletTransform::TransSpectrum</a></div><div class="ttdoc">Internally (only by GPUs) used data structure . It allows efficient data exchange between CPU and GPU...</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:112</div></div>
 
2666
<div class="ttc" id="classOpenMS_1_1MSSpectrum_html_a808327302a2ba3fb630ea132d32db942"><div class="ttname"><a href="classOpenMS_1_1MSSpectrum.html#a808327302a2ba3fb630ea132d32db942">OpenMS::MSSpectrum::MZBegin</a></div><div class="ttdeci">Iterator MZBegin(CoordinateType mz)</div><div class="ttdoc">Binary search for peak range begin. </div><div class="ttdef"><b>Definition:</b> MSSpectrum.h:506</div></div>
 
2667
<div class="ttc" id="namespaceOpenMS_html_a5a5872835f722f5e757e3e7782d84120"><div class="ttname"><a href="namespaceOpenMS.html#a5a5872835f722f5e757e3e7782d84120">OpenMS::intensityComparator</a></div><div class="ttdeci">bool intensityComparator(const PeakType &amp;a, const PeakType &amp;b)</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:573</div></div>
 
2668
<div class="ttc" id="classOpenMS_1_1Peak2D_html_ab875c2479c6cd2a0189e4684bfa4f97d"><div class="ttname"><a href="classOpenMS_1_1Peak2D.html#ab875c2479c6cd2a0189e4684bfa4f97d">OpenMS::Peak2D::setIntensity</a></div><div class="ttdeci">void setIntensity(IntensityType intensity)</div><div class="ttdoc">Non-mutable access to the data point intensity (height) </div><div class="ttdef"><b>Definition:</b> Peak2D.h:167</div></div>
 
2669
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a443723a386a52b8b178a1267c368045b"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a443723a386a52b8b178a1267c368045b">OpenMS::IsotopeWaveletTransform::getLinearInterpolation</a></div><div class="ttdeci">DoubleReal getLinearInterpolation(const typename MSSpectrum&lt; PeakType &gt;::const_iterator &amp;left_iter, const DoubleReal mz_pos, const typename MSSpectrum&lt; PeakType &gt;::const_iterator &amp;right_iter)</div><div class="ttdoc">Computes a linear (intensity) interpolation. </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:342</div></div>
 
2670
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_ad9ced5a5293256ab54096986d28d693f"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#ad9ced5a5293256ab54096986d28d693f">OpenMS::IsotopeWaveletTransform::getTransformHighRes</a></div><div class="ttdeci">virtual void getTransformHighRes(MSSpectrum&lt; PeakType &gt; &amp;c_trans, const MSSpectrum&lt; PeakType &gt; &amp;c_ref, const UInt c)</div><div class="ttdoc">Computes the isotope wavelet transform of charge state c. </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:736</div></div>
 
2671
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a09fb7c2c3438f28ddfb34466069947eb"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a09fb7c2c3438f28ddfb34466069947eb">OpenMS::IsotopeWaveletTransform::sampleTheCMarrWavelet_</a></div><div class="ttdeci">void sampleTheCMarrWavelet_(const MSSpectrum&lt; PeakType &gt; &amp;scan, const Int wavelet_length, const Int mz_index, const UInt charge)</div></div>
 
2672
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_abe874e329cc053e8fcd02c01ee2cbea8"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#abe874e329cc053e8fcd02c01ee2cbea8">OpenMS::IsotopeWaveletTransform::min_spacing_</a></div><div class="ttdeci">DoubleReal min_spacing_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:549</div></div>
 
2673
<div class="ttc" id="MSSpectrum_8h_html"><div class="ttname"><a href="MSSpectrum_8h.html">MSSpectrum.h</a></div></div>
 
2674
<div class="ttc" id="ConstRefVector_8h_html"><div class="ttname"><a href="ConstRefVector_8h.html">ConstRefVector.h</a></div></div>
 
2675
<div class="ttc" id="MSExperiment_8h_html"><div class="ttname"><a href="MSExperiment_8h.html">MSExperiment.h</a></div></div>
 
2676
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a8fbb2b54844069add79c0e49efb263e5"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a8fbb2b54844069add79c0e49efb263e5">OpenMS::IsotopeWaveletTransform::c_mzs_</a></div><div class="ttdeci">std::vector&lt; DoubleReal &gt; c_mzs_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:538</div></div>
 
2677
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a92b5ba1d3bbd4724fae3ce6c61c462e0"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a92b5ba1d3bbd4724fae3ce6c61c462e0">OpenMS::IsotopeWaveletTransform::peptideMassRule_</a></div><div class="ttdeci">DoubleReal peptideMassRule_(const DoubleReal c_mass) const </div><div class="ttdoc">Returns the monoisotopic mass (with corresponding decimal values) we would expect at c_mass...</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:505</div></div>
 
2678
<div class="ttc" id="classOpenMS_1_1MSSpectrum_html"><div class="ttname"><a href="classOpenMS_1_1MSSpectrum.html">OpenMS::MSSpectrum&lt; PeakType &gt;</a></div></div>
 
2679
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a3247a65137026dc8982e3fe617a5d95c"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a3247a65137026dc8982e3fe617a5d95c">OpenMS::IsotopeWaveletTransform::from_max_to_right_</a></div><div class="ttdeci">Int from_max_to_right_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:545</div></div>
 
2680
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum_html_a9c10530886aa26b8dc86fd13846907e1"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a9c10530886aa26b8dc86fd13846907e1">OpenMS::IsotopeWaveletTransform::TransSpectrum::getMZ</a></div><div class="ttdeci">DoubleReal getMZ(const UInt i) const </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:152</div></div>
 
2681
<div class="ttc" id="classOpenMS_1_1Peak2D_html_a396c5ebcac2e70f9b9a478bb2456985b"><div class="ttname"><a href="classOpenMS_1_1Peak2D.html#a396c5ebcac2e70f9b9a478bb2456985b">OpenMS::Peak2D::setRT</a></div><div class="ttdeci">void setRT(CoordinateType coordinate)</div><div class="ttdoc">Mutable access to the RT coordinate (index 0) </div><div class="ttdef"><b>Definition:</b> Peak2D.h:209</div></div>
 
2682
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_af1308a42f8f600930f567b3977465fe1"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#af1308a42f8f600930f567b3977465fe1">OpenMS::IsotopeWaveletTransform::sigma_</a></div><div class="ttdeci">DoubleReal sigma_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:537</div></div>
 
2683
<div class="ttc" id="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement_html_a56fc2ba583e2d06588d25e53007aa0ea"><div class="ttname"><a href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#a56fc2ba583e2d06588d25e53007aa0ea">OpenMS::IsotopeWaveletTransform::BoxElement::MZ_begin</a></div><div class="ttdeci">UInt MZ_begin</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:102</div></div>
 
2684
<div class="ttc" id="classOpenMS_1_1DPosition_html"><div class="ttname"><a href="classOpenMS_1_1DPosition.html">OpenMS::DPosition&lt; 2 &gt;</a></div></div>
 
2685
<div class="ttc" id="namespaceOpenMS_1_1Constants_html_ad10c7352b89f50d074d15d94a58ae773"><div class="ttname"><a href="namespaceOpenMS_1_1Constants.html#ad10c7352b89f50d074d15d94a58ae773">OpenMS::Constants::CUDA_INIT_FAIL</a></div><div class="ttdeci">const int CUDA_INIT_FAIL</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletConstants.h:93</div></div>
 
2686
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a93b2fba796a1b0b3364ee6ce60001843"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a93b2fba796a1b0b3364ee6ce60001843">OpenMS::IsotopeWaveletTransform::scoreThis_</a></div><div class="ttdeci">virtual DoubleReal scoreThis_(const TransSpectrum &amp;candidate, const UInt peak_cutoff, const DoubleReal seed_mz, const UInt c, const DoubleReal ampl_cutoff)</div><div class="ttdoc">Given a candidate for an isotopic pattern, this function computes the corresponding score...</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:1557</div></div>
 
2687
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_ab99b362c90b6915c337cc919b73b599f"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#ab99b362c90b6915c337cc919b73b599f">OpenMS::IsotopeWaveletTransform::initializeScan</a></div><div class="ttdeci">virtual void initializeScan(const MSSpectrum&lt; PeakType &gt; &amp;c_ref, const UInt c=0)</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:774</div></div>
 
2688
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html">OpenMS::IsotopeWaveletTransform</a></div><div class="ttdoc">A class implementing the isotope wavelet transform. If you just want to find features using the isoto...</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:87</div></div>
 
2689
<div class="ttc" id="group__MathFunctionsStatistics_html_ga3b4f6f94ad2e4cc1c10753b5f84679c2"><div class="ttname"><a href="group__MathFunctionsStatistics.html#ga3b4f6f94ad2e4cc1c10753b5f84679c2">OpenMS::Math::mean</a></div><div class="ttdeci">static DoubleReal mean(IteratorType begin, IteratorType end)</div><div class="ttdoc">Calculates the mean of a range of values. </div><div class="ttdef"><b>Definition:</b> StatisticFunctions.h:69</div></div>
 
2690
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a40ec98ac5a32af68f48e6a07e1210a37"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a40ec98ac5a32af68f48e6a07e1210a37">OpenMS::IsotopeWaveletTransform::getMinSpacing</a></div><div class="ttdeci">DoubleReal getMinSpacing() const </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:370</div></div>
 
2691
<div class="ttc" id="classOpenMS_1_1Feature_html"><div class="ttname"><a href="classOpenMS_1_1Feature.html">OpenMS::Feature</a></div><div class="ttdoc">An LC-MS feature. </div><div class="ttdef"><b>Definition:</b> Feature.h:66</div></div>
 
2692
<div class="ttc" id="namespaceOpenMS_html_a517b2dfc611bb3d0cc32026d3c68d344"><div class="ttname"><a href="namespaceOpenMS.html#a517b2dfc611bb3d0cc32026d3c68d344">OpenMS::sortOnDevice</a></div><div class="ttdeci">int sortOnDevice(float *array, int *pos_indices, int numElements, int padding)</div></div>
 
2693
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a21e1b5c7c81ebb8c8ab0f0c98b7d8fec"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a21e1b5c7c81ebb8c8ab0f0c98b7d8fec">OpenMS::IsotopeWaveletTransform::getMaxScanSize</a></div><div class="ttdeci">Size getMaxScanSize() const </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:375</div></div>
 
2694
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_ac0b48539bdee44dbe1368bcfd412f33f"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#ac0b48539bdee44dbe1368bcfd412f33f">OpenMS::IsotopeWaveletTransform::updateBoxStates</a></div><div class="ttdeci">void updateBoxStates(const MSExperiment&lt; PeakType &gt; &amp;map, const Size scan_index, const UInt RT_interleave, const UInt RT_votes_cutoff, const Int front_bound=-1, const Int end_bound=-1)</div><div class="ttdoc">A function keeping track of currently open and closed sweep line boxes. This function is used by the ...</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:2029</div></div>
 
2695
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a88c83a8cd3e02fed56c28e621d2837ae"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a88c83a8cd3e02fed56c28e621d2837ae">OpenMS::IsotopeWaveletTransform::intenstype_</a></div><div class="ttdeci">String intenstype_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:544</div></div>
 
2696
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_ad7b38b52b1b16ca069e80ff8b8618295"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#ad7b38b52b1b16ca069e80ff8b8618295">OpenMS::IsotopeWaveletTransform::identifyCharge</a></div><div class="ttdeci">virtual void identifyCharge(const MSSpectrum&lt; PeakType &gt; &amp;candidates, const MSSpectrum&lt; PeakType &gt; &amp;ref, const UInt scan_index, const UInt c, const DoubleReal ampl_cutoff, const bool check_PPMs)</div><div class="ttdoc">Given an isotope wavelet transformed spectrum candidates, this function assigns to every significant ...</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:1180</div></div>
 
2697
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_ab8fd5a80ee9a941706f62c00924e9f47"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#ab8fd5a80ee9a941706f62c00924e9f47">OpenMS::IsotopeWaveletTransform::interpol_ys_</a></div><div class="ttdeci">std::vector&lt; DoubleReal &gt; interpol_ys_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:539</div></div>
 
2698
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a40a60540d9f10eb87e4066eff10b1086"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a40a60540d9f10eb87e4066eff10b1086">OpenMS::IsotopeWaveletTransform::IsotopeWaveletTransform</a></div><div class="ttdeci">IsotopeWaveletTransform()</div><div class="ttdoc">Default Constructor. </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:597</div></div>
 
2699
<div class="ttc" id="namespaceOpenMS_html_a98090d3ef79d5636476a89689b4367e0"><div class="ttname"><a href="namespaceOpenMS.html#a98090d3ef79d5636476a89689b4367e0">OpenMS::positionComparator</a></div><div class="ttdeci">bool positionComparator(const PeakType &amp;a, const PeakType &amp;b)</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:591</div></div>
 
2700
<div class="ttc" id="namespaceOpenMS_1_1Constants_html_a4045630757d161b1f4dc0d2248202fd0"><div class="ttname"><a href="namespaceOpenMS_1_1Constants.html#a4045630757d161b1f4dc0d2248202fd0">OpenMS::Constants::IW_NEUTRON_MASS</a></div><div class="ttdeci">const double IW_NEUTRON_MASS</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletConstants.h:56</div></div>
 
2701
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a7c0382b30dd06c091e7f298107fc8251"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a7c0382b30dd06c091e7f298107fc8251">OpenMS::IsotopeWaveletTransform::from_max_to_left_</a></div><div class="ttdeci">Int from_max_to_left_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:545</div></div>
 
2702
<div class="ttc" id="classOpenMS_1_1Peak2D_html_a6fefef82aae7a3208e71648e763d5ea4"><div class="ttname"><a href="classOpenMS_1_1Peak2D.html#a6fefef82aae7a3208e71648e763d5ea4">OpenMS::Peak2D::getMZ</a></div><div class="ttdeci">CoordinateType getMZ() const </div><div class="ttdoc">Returns the m/z coordinate (index 1) </div><div class="ttdef"><b>Definition:</b> Peak2D.h:191</div></div>
 
2703
<div class="ttc" id="IsotopeWaveletConstants_8h_html"><div class="ttname"><a href="IsotopeWaveletConstants_8h.html">IsotopeWaveletConstants.h</a></div></div>
 
2704
<div class="ttc" id="classOpenMS_1_1MSExperiment_html"><div class="ttname"><a href="classOpenMS_1_1MSExperiment.html">OpenMS::MSExperiment</a></div><div class="ttdoc">Representation of a mass spectrometry experiment. </div><div class="ttdef"><b>Definition:</b> MSExperiment.h:68</div></div>
 
2705
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum_html_a420f9a11eb02b46c5bb50b13b857ca95"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a420f9a11eb02b46c5bb50b13b857ca95">OpenMS::IsotopeWaveletTransform::TransSpectrum::getTransIntensity</a></div><div class="ttdeci">DoubleReal getTransIntensity(const UInt i) const </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:164</div></div>
 
2706
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a293f7531cb47810311806f4aca65628f"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a293f7531cb47810311806f4aca65628f">OpenMS::IsotopeWaveletTransform::getAvMZSpacing_</a></div><div class="ttdeci">DoubleReal getAvMZSpacing_(const MSSpectrum&lt; PeakType &gt; &amp;scan)</div><div class="ttdoc">Computes the average MZ spacing of scan. </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:1770</div></div>
 
2707
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum_html_af0266aa100043c3b03d6b1fce8f567a3"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#af0266aa100043c3b03d6b1fce8f567a3">OpenMS::IsotopeWaveletTransform::TransSpectrum::reference_</a></div><div class="ttdeci">const MSSpectrum&lt; PeakType &gt; * reference_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:223</div></div>
 
2708
<div class="ttc" id="classOpenMS_1_1Feature_html_a8d65806c4f009695ab7bcf61eaf5546a"><div class="ttname"><a href="classOpenMS_1_1Feature.html#a8d65806c4f009695ab7bcf61eaf5546a">OpenMS::Feature::setConvexHulls</a></div><div class="ttdeci">void setConvexHulls(const std::vector&lt; ConvexHull2D &gt; &amp;hulls)</div><div class="ttdoc">Set the convex hulls of single mass traces. </div></div>
 
2709
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum_html_aef6a8bdc8ceaf79040c262392dae689d"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#aef6a8bdc8ceaf79040c262392dae689d">OpenMS::IsotopeWaveletTransform::TransSpectrum::begin</a></div><div class="ttdeci">MSSpectrum&lt; PeakType &gt;::const_iterator begin() const </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:216</div></div>
 
2710
<div class="ttc" id="namespaceOpenMS_1_1Constants_html_aad9d587de62ab9ad28e0054384e6e126"><div class="ttname"><a href="namespaceOpenMS_1_1Constants.html#aad9d587de62ab9ad28e0054384e6e126">OpenMS::Constants::PEPTIDE_MASS_RULE_BOUND</a></div><div class="ttdeci">const double PEPTIDE_MASS_RULE_BOUND</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletConstants.h:52</div></div>
 
2711
<div class="ttc" id="classOpenMS_1_1Feature_html_aeba0cded976431f70fbea5499218ce18"><div class="ttname"><a href="classOpenMS_1_1Feature.html#aeba0cded976431f70fbea5499218ce18">OpenMS::Feature::setOverallQuality</a></div><div class="ttdeci">void setOverallQuality(QualityType q)</div><div class="ttdoc">Set the overall quality. </div></div>
 
2712
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_acdf960f3bc80fd3c9751bd698ca96be8"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#acdf960f3bc80fd3c9751bd698ca96be8">OpenMS::IsotopeWaveletTransform::computeMinSpacing</a></div><div class="ttdeci">virtual void computeMinSpacing(const MSSpectrum&lt; PeakType &gt; &amp;c_ref)</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:816</div></div>
 
2713
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a4beeaaa11d03a3c50eba42a81be430d8"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a4beeaaa11d03a3c50eba42a81be430d8">OpenMS::IsotopeWaveletTransform::scores_</a></div><div class="ttdeci">std::vector&lt; float &gt; scores_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:550</div></div>
 
2714
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum_html_a059641a0cc2fa2773b63d48ac92a5edd"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a059641a0cc2fa2773b63d48ac92a5edd">OpenMS::IsotopeWaveletTransform::TransSpectrum::MZEnd</a></div><div class="ttdeci">MSSpectrum&lt; PeakType &gt;::const_iterator MZEnd(const DoubleReal mz) const </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:202</div></div>
 
2715
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a9857b8679db519b2cc7672e4a719ee5f"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a9857b8679db519b2cc7672e4a719ee5f">OpenMS::IsotopeWaveletTransform::psi_</a></div><div class="ttdeci">std::vector&lt; DoubleReal &gt; psi_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:538</div></div>
 
2716
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_ae39a2fcf405a541f81ffffdc36218831"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#ae39a2fcf405a541f81ffffdc36218831">OpenMS::IsotopeWaveletTransform::c_sorted_candidate_</a></div><div class="ttdeci">MSSpectrum&lt; PeakType &gt; c_sorted_candidate_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:548</div></div>
 
2717
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a221a9199e74c6f7397c24fb43cf260f2"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a221a9199e74c6f7397c24fb43cf260f2">OpenMS::IsotopeWaveletTransform::data_length_</a></div><div class="ttdeci">UInt data_length_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:542</div></div>
 
2718
<div class="ttc" id="group__Concept_html_gaf9ecec2d692138fab9167164a457cbd4"><div class="ttname"><a href="group__Concept.html#gaf9ecec2d692138fab9167164a457cbd4">OpenMS::Size</a></div><div class="ttdeci">size_t Size</div><div class="ttdoc">Size type e.g. used as variable which can hold result of size() </div><div class="ttdef"><b>Definition:</b> Types.h:144</div></div>
 
2719
<div class="ttc" id="namespaceOpenMS_html_ac46a8fc51b287c355e88e3778ff61dab"><div class="ttname"><a href="namespaceOpenMS.html#ac46a8fc51b287c355e88e3778ff61dab">OpenMS::intensityAscendingComparator</a></div><div class="ttdeci">bool intensityAscendingComparator(const PeakType &amp;a, const PeakType &amp;b)</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:579</div></div>
 
2720
<div class="ttc" id="namespaceOpenMS_1_1Constants_html_a59acdd54ace8132637f245f72b551e74"><div class="ttname"><a href="namespaceOpenMS_1_1Constants.html#a59acdd54ace8132637f245f72b551e74">OpenMS::Constants::CUDA_EXTENDED_BLOCK_SIZE_MAX</a></div><div class="ttdeci">const int CUDA_EXTENDED_BLOCK_SIZE_MAX</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletConstants.h:97</div></div>
 
2721
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum_html_a4d69c4dc58992f495ee2617739947afd"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a4d69c4dc58992f495ee2617739947afd">OpenMS::IsotopeWaveletTransform::TransSpectrum::TransSpectrum</a></div><div class="ttdeci">TransSpectrum()</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:119</div></div>
 
2722
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a0c0243adc4a1eb30bf62144a88181131"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a0c0243adc4a1eb30bf62144a88181131">OpenMS::IsotopeWaveletTransform::~IsotopeWaveletTransform</a></div><div class="ttdeci">virtual ~IsotopeWaveletTransform()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:678</div></div>
 
2723
<div class="ttc" id="classOpenMS_1_1MSExperiment_html_af072fc84225ae927f7527f208ea86cbd"><div class="ttname"><a href="classOpenMS_1_1MSExperiment.html#af072fc84225ae927f7527f208ea86cbd">OpenMS::MSExperiment::clear</a></div><div class="ttdeci">void clear(bool clear_meta_data)</div><div class="ttdoc">Clears all data and meta data. </div><div class="ttdef"><b>Definition:</b> MSExperiment.h:809</div></div>
 
2724
<div class="ttc" id="classOpenMS_1_1cudaHelp_html_ad809db94e78d3f3e9868aff5bbbc61b8"><div class="ttname"><a href="classOpenMS_1_1cudaHelp.html#ad809db94e78d3f3e9868aff5bbbc61b8">OpenMS::cudaHelp::mz</a></div><div class="ttdeci">float mz</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:77</div></div>
 
2725
<div class="ttc" id="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement_html_a6d47e4bb5a579f9dd390c2a4f07a3cd3"><div class="ttname"><a href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#a6d47e4bb5a579f9dd390c2a4f07a3cd3">OpenMS::IsotopeWaveletTransform::BoxElement::c</a></div><div class="ttdeci">UInt c</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:96</div></div>
 
2726
<div class="ttc" id="classOpenMS_1_1cudaHelp_html_a8c5cd9b525ee73a24b1d9d8e34982d1c"><div class="ttname"><a href="classOpenMS_1_1cudaHelp.html#a8c5cd9b525ee73a24b1d9d8e34982d1c">OpenMS::cudaHelp::score</a></div><div class="ttdeci">float score</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:79</div></div>
 
2727
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a547a68a59a0168eea6b811de936b6dd9"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a547a68a59a0168eea6b811de936b6dd9">OpenMS::IsotopeWaveletTransform::indices_</a></div><div class="ttdeci">std::vector&lt; int &gt; indices_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:546</div></div>
 
2728
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum_html_a2cf06f0f5a8cbfc86220b92424d4552b"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a2cf06f0f5a8cbfc86220b92424d4552b">OpenMS::IsotopeWaveletTransform::TransSpectrum::MZBegin</a></div><div class="ttdeci">MSSpectrum&lt; PeakType &gt;::const_iterator MZBegin(const DoubleReal mz) const </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:195</div></div>
 
2729
<div class="ttc" id="classOpenMS_1_1BaseFeature_html_ab595724fe9b9eb5d37011f07d90b9e0b"><div class="ttname"><a href="classOpenMS_1_1BaseFeature.html#ab595724fe9b9eb5d37011f07d90b9e0b">OpenMS::BaseFeature::setCharge</a></div><div class="ttdeci">void setCharge(const ChargeType &amp;ch)</div><div class="ttdoc">Set charge state. </div></div>
 
2730
<div class="ttc" id="classOpenMS_1_1ConvexHull2D_html_ad84ba51670fc0bd9b6b2091ba27c3013"><div class="ttname"><a href="classOpenMS_1_1ConvexHull2D.html#ad84ba51670fc0bd9b6b2091ba27c3013">OpenMS::ConvexHull2D::addPoints</a></div><div class="ttdeci">void addPoints(const PointArrayType &amp;points)</div></div>
 
2731
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a7c937464c726b102d04846c420349f3a"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a7c937464c726b102d04846c420349f3a">OpenMS::IsotopeWaveletTransform::closed_boxes_</a></div><div class="ttdeci">std::multimap&lt; DoubleReal, Box &gt; closed_boxes_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:534</div></div>
 
2732
<div class="ttc" id="namespaceOpenMS_1_1Constants_html_a09b73b600db9441510ebfa59cb7dd527"><div class="ttname"><a href="namespaceOpenMS_1_1Constants.html#a09b73b600db9441510ebfa59cb7dd527">OpenMS::Constants::CUDA_BLOCK_SIZE_MAX</a></div><div class="ttdeci">const int CUDA_BLOCK_SIZE_MAX</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletConstants.h:96</div></div>
 
2733
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum_html_a92fc56a385acc7bea877d086a655fdf0"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a92fc56a385acc7bea877d086a655fdf0">OpenMS::IsotopeWaveletTransform::TransSpectrum::trans_intens_</a></div><div class="ttdeci">std::vector&lt; float &gt; * trans_intens_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:224</div></div>
 
2734
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum_html_a9d78a687cf2a391198bb3cbc08bc06cb"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a9d78a687cf2a391198bb3cbc08bc06cb">OpenMS::IsotopeWaveletTransform::TransSpectrum::size</a></div><div class="ttdeci">Size size() const </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:176</div></div>
 
2735
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum_html_a77c0563d5ff6ae3dba2eee2cbc4b19c1"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a77c0563d5ff6ae3dba2eee2cbc4b19c1">OpenMS::IsotopeWaveletTransform::TransSpectrum::~TransSpectrum</a></div><div class="ttdeci">virtual ~TransSpectrum()</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:132</div></div>
 
2736
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a32280019a7d0e19a07e0c3fd44aee972"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a32280019a7d0e19a07e0c3fd44aee972">OpenMS::IsotopeWaveletTransform::max_charge_</a></div><div class="ttdeci">UInt max_charge_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:542</div></div>
 
2737
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_af8b1d83064f6ef81d7a617802bab249f"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#af8b1d83064f6ef81d7a617802bab249f">OpenMS::IsotopeWaveletTransform::Box</a></div><div class="ttdeci">std::multimap&lt; UInt, BoxElement &gt; Box</div><div class="ttdoc">Key: RT index, value: BoxElement. </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:106</div></div>
 
2738
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a6eb1919d7fb83824c39dff16d3fca8f7"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a6eb1919d7fb83824c39dff16d3fca8f7">OpenMS::IsotopeWaveletTransform::extendBox_</a></div><div class="ttdeci">void extendBox_(const MSExperiment&lt; PeakType &gt; &amp;map, const Box box)</div><div class="ttdoc">A currently still necessary function that extends the box box in order to capture also signals whose ...</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:2098</div></div>
 
2739
<div class="ttc" id="classOpenMS_1_1MSSpectrum_html_a3da529bd3240fa0d7148484bbef0b9d7"><div class="ttname"><a href="classOpenMS_1_1MSSpectrum.html#a3da529bd3240fa0d7148484bbef0b9d7">OpenMS::MSSpectrum::getRT</a></div><div class="ttdeci">DoubleReal getRT() const </div><div class="ttdef"><b>Definition:</b> MSSpectrum.h:215</div></div>
 
2740
<div class="ttc" id="classOpenMS_1_1ConstRefVector_html"><div class="ttname"><a href="classOpenMS_1_1ConstRefVector.html">OpenMS::ConstRefVector</a></div><div class="ttdoc">This vector holds pointer to the elements of another container. </div><div class="ttdef"><b>Definition:</b> ConstRefVector.h:72</div></div>
 
2741
<div class="ttc" id="namespaceOpenMS_1_1Constants_html_ac5bda598608da7b58538d2383744adbe"><div class="ttname"><a href="namespaceOpenMS_1_1Constants.html#ac5bda598608da7b58538d2383744adbe">OpenMS::Constants::IW_HALF_NEUTRON_MASS</a></div><div class="ttdeci">const double IW_HALF_NEUTRON_MASS</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletConstants.h:57</div></div>
 
2742
<div class="ttc" id="classOpenMS_1_1cudaHelp_html_a395577a8badec0a6a3cec15c1f2a39f0"><div class="ttname"><a href="classOpenMS_1_1cudaHelp.html#a395577a8badec0a6a3cec15c1f2a39f0">OpenMS::cudaHelp::intens</a></div><div class="ttdeci">float intens</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:78</div></div>
 
2743
<div class="ttc" id="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement_html_aba2639fbb6538864cefddd4d6c8ef417"><div class="ttname"><a href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#aba2639fbb6538864cefddd4d6c8ef417">OpenMS::IsotopeWaveletTransform::BoxElement::RT_index</a></div><div class="ttdeci">UInt RT_index</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:101</div></div>
 
2744
<div class="ttc" id="namespaceOpenMS_1_1Constants_html_a1cf96746f1f521e1b53ab8947574e1ca"><div class="ttname"><a href="namespaceOpenMS_1_1Constants.html#a1cf96746f1f521e1b53ab8947574e1ca">OpenMS::Constants::PEPTIDE_MASS_RULE_FACTOR</a></div><div class="ttdeci">const double PEPTIDE_MASS_RULE_FACTOR</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletConstants.h:51</div></div>
 
2745
<div class="ttc" id="classOpenMS_1_1cudaHelp_html_a3e3449f1d00552f421d502ce67fd9519"><div class="ttname"><a href="classOpenMS_1_1cudaHelp.html#a3e3449f1d00552f421d502ce67fd9519">OpenMS::cudaHelp::getIntensity</a></div><div class="ttdeci">float getIntensity()</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:74</div></div>
 
2746
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum_html_a5891967609c1abd65616dcd4456e41da"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a5891967609c1abd65616dcd4456e41da">OpenMS::IsotopeWaveletTransform::TransSpectrum::getRefIntensity</a></div><div class="ttdeci">DoubleReal getRefIntensity(const UInt i) const </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:158</div></div>
 
2747
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a11377485c8bf0bfc427b38d5733fd571"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a11377485c8bf0bfc427b38d5733fd571">OpenMS::IsotopeWaveletTransform::max_scan_size_</a></div><div class="ttdeci">Size max_scan_size_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:541</div></div>
 
2748
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a5ea2297f4d01f303b140d3dd574022b9"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a5ea2297f4d01f303b140d3dd574022b9">OpenMS::IsotopeWaveletTransform::getClosedBoxes</a></div><div class="ttdeci">virtual std::multimap&lt; DoubleReal, Box &gt; getClosedBoxes()</div><div class="ttdoc">Returns the closed boxes. </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:334</div></div>
 
2749
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a750c0f353f03bb3361b276497b2c216b"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a750c0f353f03bb3361b276497b2c216b">OpenMS::IsotopeWaveletTransform::checkPPMTheoModel_</a></div><div class="ttdeci">virtual std::pair&lt; DoubleReal, DoubleReal &gt; checkPPMTheoModel_(const MSSpectrum&lt; PeakType &gt; &amp;ref, const DoubleReal c_mz, const UInt c)</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:2739</div></div>
 
2750
<div class="ttc" id="namespaceOpenMS_html_a9d73fc492754f9c984700dbd8bc9ca0b"><div class="ttname"><a href="namespaceOpenMS.html#a9d73fc492754f9c984700dbd8bc9ca0b">OpenMS::scoreOnDevice</a></div><div class="ttdeci">void scoreOnDevice(int *sorted_positions_indices, float *trans_intensities, float *pos, float *scores, const int c, const int num_of_scores, const int overall_size, const unsigned int max_peak_cutoff, const float ampl_cutoff)</div></div>
 
2751
<div class="ttc" id="group__Concept_html_ga7cc214a236ad3bb6ad435bdcf5262a3f"><div class="ttname"><a href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">OpenMS::Int</a></div><div class="ttdeci">int Int</div><div class="ttdoc">Signed integer type. </div><div class="ttdef"><b>Definition:</b> Types.h:100</div></div>
 
2752
<div class="ttc" id="namespaceOpenMS_1_1Constants_html_afb04ba9e1308cbbaa20a944f0ab124af"><div class="ttname"><a href="namespaceOpenMS_1_1Constants.html#afb04ba9e1308cbbaa20a944f0ab124af">OpenMS::Constants::IW_QUARTER_NEUTRON_MASS</a></div><div class="ttdeci">const double IW_QUARTER_NEUTRON_MASS</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletConstants.h:58</div></div>
 
2753
<div class="ttc" id="Exception_8h_html"><div class="ttname"><a href="Exception_8h.html">Exception.h</a></div></div>
 
2754
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a718a711938d51f08a2c0aec9a5e8ad63"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a718a711938d51f08a2c0aec9a5e8ad63">OpenMS::IsotopeWaveletTransform::setSigma</a></div><div class="ttdeci">void setSigma(const DoubleReal sigma)</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:363</div></div>
 
2755
<div class="ttc" id="namespaceOpenMS_1_1Constants_html_a7beffa0fddafc13a126c70c4146efed4"><div class="ttname"><a href="namespaceOpenMS_1_1Constants.html#a7beffa0fddafc13a126c70c4146efed4">OpenMS::Constants::DEFAULT_NUM_OF_INTERPOLATION_POINTS</a></div><div class="ttdeci">const unsigned int DEFAULT_NUM_OF_INTERPOLATION_POINTS</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletConstants.h:45</div></div>
 
2756
<div class="ttc" id="namespaceOpenMS_html_aceb625a4ecfa2772148ef49e0e036da9"><div class="ttname"><a href="namespaceOpenMS.html#aceb625a4ecfa2772148ef49e0e036da9">OpenMS::getExternalCudaTransforms</a></div><div class="ttdeci">void getExternalCudaTransforms(dim3 dimGrid, dim3 dimBlock, float *positions_dev, float *intensities_dev, int from_max_to_left, int from_max_to_right, float *result_dev, const int charge, const int to_load, const int to_compute, const int size, float *fwd2, bool highres=false)</div></div>
 
2757
<div class="ttc" id="LinearRegression_8h_html"><div class="ttname"><a href="LinearRegression_8h.html">LinearRegression.h</a></div></div>
 
2758
<div class="ttc" id="classOpenMS_1_1IsotopeWavelet_html_a4ed32478c0f092c6507b7fa4c7539c9a"><div class="ttname"><a href="classOpenMS_1_1IsotopeWavelet.html#a4ed32478c0f092c6507b7fa4c7539c9a">OpenMS::IsotopeWavelet::getNumPeakCutOff</a></div><div class="ttdeci">static UInt getNumPeakCutOff(const DoubleReal mass, const UInt z)</div></div>
 
2759
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a1ac4492df44e513e2dd8b88d901cfe0e"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a1ac4492df44e513e2dd8b88d901cfe0e">OpenMS::IsotopeWaveletTransform::zeros_</a></div><div class="ttdeci">std::vector&lt; float &gt; zeros_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:550</div></div>
 
2760
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_a56b814a538afc8e7c9f5ebc74b658208"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#a56b814a538afc8e7c9f5ebc74b658208">OpenMS::IsotopeWaveletTransform::front_boxes_</a></div><div class="ttdeci">std::multimap&lt; DoubleReal, Box &gt; front_boxes_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:534</div></div>
 
2761
<div class="ttc" id="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement_html_a62e26b2bd8e4c4038f96c14cae131978"><div class="ttname"><a href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#a62e26b2bd8e4c4038f96c14cae131978">OpenMS::IsotopeWaveletTransform::BoxElement::ref_intens</a></div><div class="ttdeci">DoubleReal ref_intens</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:99</div></div>
 
2762
<div class="ttc" id="FeatureMap_8h_html"><div class="ttname"><a href="FeatureMap_8h.html">FeatureMap.h</a></div></div>
 
2763
<div class="ttc" id="classOpenMS_1_1IsotopeWavelet_html_aef7238efd522b4ad9d4ce12d33e51709"><div class="ttname"><a href="classOpenMS_1_1IsotopeWavelet.html#aef7238efd522b4ad9d4ce12d33e51709">OpenMS::IsotopeWavelet::getValueByLambda</a></div><div class="ttdeci">static DoubleReal getValueByLambda(const DoubleReal lambda, const DoubleReal tz1)</div><div class="ttdoc">Returns the value of the isotope wavelet at position t via a fast table lookup. Usually, you do not need to call this function. Please use. </div></div>
 
2764
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_ada0e00b24bc19d43fa1c647880d60e66"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#ada0e00b24bc19d43fa1c647880d60e66">OpenMS::IsotopeWaveletTransform::open_boxes_</a></div><div class="ttdeci">std::multimap&lt; DoubleReal, Box &gt; open_boxes_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:534</div></div>
 
2765
<div class="ttc" id="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement_html"><div class="ttname"><a href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html">OpenMS::IsotopeWaveletTransform::BoxElement</a></div><div class="ttdoc">Internally used data structure. </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:93</div></div>
 
2766
<div class="ttc" id="group__Concept_html_gace75bfb1aba684e874dffee13738bd15"><div class="ttname"><a href="group__Concept.html#gace75bfb1aba684e874dffee13738bd15">OpenMS::DoubleReal</a></div><div class="ttdeci">double DoubleReal</div><div class="ttdoc">Double-precision real type. </div><div class="ttdef"><b>Definition:</b> Types.h:118</div></div>
 
2767
<div class="ttc" id="classOpenMS_1_1IsotopeWaveletTransform_html_aaeef6f2fe43977f71b0d4ec27b4d6b02"><div class="ttname"><a href="classOpenMS_1_1IsotopeWaveletTransform.html#aaeef6f2fe43977f71b0d4ec27b4d6b02">OpenMS::IsotopeWaveletTransform::c_spacings_</a></div><div class="ttdeci">std::vector&lt; DoubleReal &gt; c_spacings_</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:538</div></div>
 
2768
<div class="ttc" id="classOpenMS_1_1cudaHelp_html"><div class="ttname"><a href="classOpenMS_1_1cudaHelp.html">OpenMS::cudaHelp</a></div><div class="ttdoc">An internally used class, subsuming several variables. </div><div class="ttdef"><b>Definition:</b> IsotopeWaveletTransform.h:69</div></div>
 
2769
<div class="ttc" id="namespaceOpenMS_1_1Constants_html_a9aef51de751f86746b314c668d9e535a"><div class="ttname"><a href="namespaceOpenMS_1_1Constants.html#a9aef51de751f86746b314c668d9e535a">OpenMS::Constants::PEPTIDE_MASS_RULE_THEO_PPM_BOUND</a></div><div class="ttdeci">const double PEPTIDE_MASS_RULE_THEO_PPM_BOUND</div><div class="ttdef"><b>Definition:</b> IsotopeWaveletConstants.h:53</div></div>
 
2770
</div><!-- fragment --></div><!-- contents -->
 
2771
<HR style="height:1px; border:none; border-top:1px solid #c0c0c0;">
 
2772
<TABLE width="100%" border="0">
 
2773
<TR>
 
2774
<TD><font color="#c0c0c0">OpenMS / TOPP release 1.11.1</font></TD>
 
2775
<TD align="right"><font color="#c0c0c0">Documentation generated on Thu Nov 14 2013 11:19:15 using doxygen 1.8.5</font></TD>
 
2776
</TR>
 
2777
</TABLE>
 
2778
</BODY>
 
2779
</HTML>