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">
7
<BODY BGCOLOR="#FFFFFF">
8
<A href="index.html">Home</A> ·
9
<A href="classes.html">Classes</A> ·
10
<A href="annotated.html">Annotated Classes</A> ·
11
<A href="modules.html">Modules</A> ·
12
<A href="functions_func.html">Members</A> ·
13
<A href="namespaces.html">Namespaces</A> ·
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">
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>
23
<div class="headertitle">
24
<div class="title">IsotopeWaveletTransform.h</div> </div>
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> <span class="comment">// --------------------------------------------------------------------------</span></div>
28
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// OpenMS -- Open-Source Mass Spectrometry</span></div>
29
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// --------------------------------------------------------------------------</span></div>
30
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <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> <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> <span class="comment">//</span></div>
33
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <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> <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> <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> <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> <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> <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> <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> <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> <span class="comment">// without specific prior written permission.</span></div>
42
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <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> <span class="comment">// --------------------------------------------------------------------------</span></div>
44
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"</span></div>
45
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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> <span class="comment">//</span></div>
56
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// --------------------------------------------------------------------------</span></div>
57
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// $Maintainer: Rene Hussong$</span></div>
58
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// $Authors: $</span></div>
59
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// --------------------------------------------------------------------------</span></div>
60
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div>
61
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#ifndef OPENMS_TRANSFORMATIONS_FEATUREFINDER_ISOTOPEWAVELETTRANSFORM_H</span></div>
62
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <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> <span class="preprocessor"></span></div>
64
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include <<a class="code" href="IsotopeWaveletConstants_8h.html">OpenMS/TRANSFORMATIONS/FEATUREFINDER/IsotopeWaveletConstants.h</a>></span></div>
65
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include <<a class="code" href="IsotopeWavelet_8h.html">OpenMS/TRANSFORMATIONS/FEATUREFINDER/IsotopeWavelet.h</a>></span></div>
66
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include <<a class="code" href="FeatureMap_8h.html">OpenMS/KERNEL/FeatureMap.h</a>></span></div>
67
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include <<a class="code" href="MSExperiment_8h.html">OpenMS/KERNEL/MSExperiment.h</a>></span></div>
68
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <<a class="code" href="MSSpectrum_8h.html">OpenMS/KERNEL/MSSpectrum.h</a>></span></div>
69
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include <<a class="code" href="Exception_8h.html">OpenMS/CONCEPT/Exception.h</a>></span></div>
70
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include <<a class="code" href="LinearRegression_8h.html">OpenMS/MATH/STATISTICS/LinearRegression.h</a>></span></div>
71
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include <<a class="code" href="ConstRefVector_8h.html">OpenMS/DATASTRUCTURES/ConstRefVector.h</a>></span></div>
72
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include <cmath></span></div>
73
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include <math.h></span></div>
74
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#include <boost/math/special_functions/bessel.hpp></span></div>
75
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include <vector></span></div>
76
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#include <map></span></div>
77
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include <sstream></span></div>
78
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#include <fstream></span></div>
79
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#include <iomanip></span></div>
80
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div>
81
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#ifdef OPENMS_HAS_CUDA</span></div>
82
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor"></span><span class="preprocessor">#include <cuda.h></span></div>
83
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#include <<a class="code" href="IsotopeWaveletCudaKernel_8h.html">OpenMS/TRANSFORMATIONS/FEATUREFINDER/IsotopeWaveletCudaKernel.h</a>></span></div>
84
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#endif</span></div>
85
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor"></span></div>
86
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <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> <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> <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> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
90
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor"></span></div>
91
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="keyword">namespace </span>OpenMS</div>
92
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> {</div>
93
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div>
94
<div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classOpenMS_1_1cudaHelp.html"> 69</a></span>  <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>  {</div>
96
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <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>  <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>  { <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>  <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>  { <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> </div>
102
<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classOpenMS_1_1cudaHelp.html#ad809db94e78d3f3e9868aff5bbbc61b8"> 77</a></span>  <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>  <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>  <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>  };</div>
106
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div>
107
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div>
108
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
109
<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html"> 87</a></span>  <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>  {</div>
111
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">public</span>:</div>
112
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div>
113
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </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>  <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>  {</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>  <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#ae7800b5f37aa029e53c6776f1952cdc7">mz</a>; <span class="comment">//<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>  <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">//<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>  <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#aa2ac7da25c2023e7cf03863e5b907fd9">score</a>; <span class="comment">//<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>  <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#a991a665a859b92931ef2ddccea7d98c5">intens</a>; <span class="comment">//<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>  <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>  <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#afc4478a0397a76fef003746ff45fc201">RT</a>; <span class="comment">//<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>  <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">//<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>  <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">//<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>  <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">//<Index</span></div>
125
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  };</div>
126
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div>
127
<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#af8b1d83064f6ef81d7a617802bab249f"> 106</a></span>  <span class="keyword">typedef</span> std::multimap<UInt, BoxElement> <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> </div>
129
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </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>  <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>  {</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>  <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> </div>
134
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="keyword">public</span>:</div>
135
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </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>  <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>  <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>  {</div>
139
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div>
140
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </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>  <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<PeakType></a>* reference) :</div>
142
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <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>  {</div>
144
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a92fc56a385acc7bea877d086a655fdf0">trans_intens_</a> = <span class="keyword">new</span> std::vector<float>(<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#af0266aa100043c3b03d6b1fce8f567a3">reference_</a>->size(), 0.0);</div>
145
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  }</div>
146
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </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>  <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>  {</div>
149
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <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>  }</div>
151
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </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>  <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>  {</div>
154
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <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>  <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>  <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>  <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>  }</div>
159
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </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>  <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> <span class="keyword"> </span>{</div>
162
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#af0266aa100043c3b03d6b1fce8f567a3">reference_</a>-><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>  }</div>
164
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </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>  <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> <span class="keyword"> </span>{</div>
167
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <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>  }</div>
169
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </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>  <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> <span class="keyword"> </span>{</div>
172
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <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>  }</div>
174
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </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>  <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> <span class="keyword"> </span>{</div>
177
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <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>  }</div>
179
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </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>  <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>  {</div>
182
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  (*trans_intens_)[i] = intens;</div>
183
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div>
184
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </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>  <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> <span class="keyword"> </span>{</div>
187
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">return</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a92fc56a385acc7bea877d086a655fdf0">trans_intens_</a>->size();</div>
188
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div>
189
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </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>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></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>  {</div>
192
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <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>  }</div>
194
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </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>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></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> <span class="keyword"> </span>{</div>
197
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <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>  }</div>
199
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </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>  <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType>::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> <span class="keyword"> </span>{</div>
202
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">return</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#af0266aa100043c3b03d6b1fce8f567a3">reference_</a>-><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>  }</div>
204
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </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>  <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType>::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> <span class="keyword"> </span>{</div>
207
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">return</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#af0266aa100043c3b03d6b1fce8f567a3">reference_</a>-><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>  }</div>
209
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </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>  <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType>::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> <span class="keyword"> </span>{</div>
212
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">return</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#af0266aa100043c3b03d6b1fce8f567a3">reference_</a>->end();</div>
213
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  }</div>
214
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </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>  <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType>::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> <span class="keyword"> </span>{</div>
217
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">return</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#af0266aa100043c3b03d6b1fce8f567a3">reference_</a>->begin();</div>
218
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  }</div>
219
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div>
220
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="keyword">protected</span>:</div>
221
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </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>  <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>* <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#af0266aa100043c3b03d6b1fce8f567a3">reference_</a>; <span class="comment">//<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>  std::vector<float>* <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a92fc56a385acc7bea877d086a655fdf0">trans_intens_</a>; <span class="comment">//<The intensities of the transform</span></div>
224
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div>
225
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  };</div>
226
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div>
227
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div>
228
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div>
229
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <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">"ref"</span>);</div>
230
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div>
231
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <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> </div>
233
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div>
234
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <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<PeakType></a>& c_trans, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& 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> </div>
236
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <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<PeakType></a>& c_trans, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& 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> </div>
238
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <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<PeakType></a>& candidates, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& 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>  <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> </div>
241
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <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<PeakType></a>& 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> </div>
243
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="preprocessor">#ifdef OPENMS_HAS_CUDA</span></div>
244
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span> <span class="preprocessor"></span></div>
245
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <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<PeakType></a>& 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> </div>
247
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <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> </div>
249
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> getTransformCuda(<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html">TransSpectrum</a>& 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> </div>
251
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <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>& 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>  <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> </div>
254
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keyword">virtual</span> <span class="keywordtype">int</span> sortCuda(<a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& sorted);</div>
255
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span> <span class="preprocessor">#endif</span></div>
256
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <span class="preprocessor"></span></div>
257
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div>
258
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <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<PeakType></a>& 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>  <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> </div>
261
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span> </div>
262
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <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<PeakType></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> </div>
264
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div>
265
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <a class="code" href="classOpenMS_1_1FeatureMap.html">FeatureMap<Feature></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<PeakType></a>& 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> </div>
267
<div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a5ea2297f4d01f303b140d3dd574022b9"> 334</a></span>  <span class="keyword">virtual</span> std::multimap<DoubleReal, Box> <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>  { <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> </div>
270
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span> </div>
271
<div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a443723a386a52b8b178a1267c368045b"> 342</a></span>  <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<PeakType>::const_iterator</a>& 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<PeakType>::const_iterator</a>& right_iter)</div>
272
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  {</div>
273
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">return</span> left_iter->getIntensity() + (right_iter->getIntensity() - left_iter->getIntensity()) / (right_iter->getMZ() - left_iter->getMZ()) * (mz_pos - left_iter->getMZ());</div>
274
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div>
275
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div>
276
<div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a2b50707910bf9a7c8d94a2bf81aedeb8"> 353</a></span>  <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>  {</div>
278
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <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>  }</div>
280
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span> </div>
281
<div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a304e5ec82254e764fd4b290c546dd8f6"> 358</a></span>  <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> <span class="keyword"> </span>{</div>
283
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <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>  }</div>
285
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div>
286
<div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a718a711938d51f08a2c0aec9a5e8ad63"> 363</a></span>  <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>  {</div>
288
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <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>  }</div>
290
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div>
291
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <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<PeakType></a>& c_ref);</div>
292
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span> </div>
293
<div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a40ec98ac5a32af68f48e6a07e1210a37"> 370</a></span>  <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> <span class="keyword"> </span>{</div>
295
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <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>  }</div>
297
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span> </div>
298
<div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a21e1b5c7c81ebb8c8ab0f0c98b7d8fec"> 375</a></span>  <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> <span class="keyword"> </span>{</div>
300
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <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>  }</div>
302
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span> </div>
303
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="keyword">protected</span>:</div>
304
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span> </div>
305
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div>
306
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <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> </div>
308
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span> </div>
309
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <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<PeakType></a>& 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> </div>
311
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span> </div>
312
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <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& 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>  <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> </div>
315
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <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<PeakType></a>& 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>  <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> </div>
318
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span> </div>
319
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <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& candidate, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& 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>  <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> </div>
322
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <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<PeakType></a>& candidate, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& 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>  <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> </div>
325
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keyword">virtual</span> std::pair<DoubleReal, DoubleReal> <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<PeakType></a>& 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> </div>
327
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span> </div>
328
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <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& scan);</div>
329
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <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<PeakType></a>& scan);</div>
330
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span> </div>
331
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <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& 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>  <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<PeakType></a>& 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> </div>
334
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <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>  <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> </div>
337
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <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>  <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> </div>
340
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <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<PeakType></a>& scan);</div>
341
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span> </div>
342
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span> </div>
343
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#aa6e604058ed988f0f108f1d7d446cd56">clusterSeeds_</a>(<span class="keyword">const</span> TransSpectrum& candidates, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& ref,</div>
344
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <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> </div>
346
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <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<PeakType></a>& candidates, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& ref,</div>
347
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <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> </div>
349
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span> </div>
350
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <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<PeakType></a>& 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> </div>
352
<div class="line"><a name="l00505"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a92b5ba1d3bbd4724fae3ce6c61c462e0"> 505</a></span>  <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> <span class="keyword"> </span>{</div>
354
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <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>  <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>  <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>  <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> </div>
359
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keywordflow">if</span> (new_frac_mass - old_frac_mass > 0.5)</div>
360
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  {</div>
361
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  new_mass -= 1.;</div>
362
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  }</div>
363
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span> </div>
364
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="keywordflow">if</span> (new_frac_mass - old_frac_mass < -0.5)</div>
365
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  {</div>
366
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  new_mass += 1.;</div>
367
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  }</div>
368
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span> </div>
369
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">return</span> new_mass;</div>
370
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  }</div>
371
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span> </div>
372
<div class="line"><a name="l00528"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a7d6c0687da2e98bd202a1b7ada3ca8a4"> 528</a></span>  <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> <span class="keyword"> </span>{</div>
374
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <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>  }</div>
376
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span> </div>
377
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <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>  std::multimap<DoubleReal, Box> <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>  std::vector<std::multimap<DoubleReal, Box> >* <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> </div>
381
<div class="line"><a name="l00537"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#af1308a42f8f600930f567b3977465fe1"> 537</a></span>  <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>  std::vector<DoubleReal> <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>  std::vector<DoubleReal> <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> </div>
385
<div class="line"><a name="l00541"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a11377485c8bf0bfc427b38d5733fd571"> 541</a></span>  <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>  <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>  <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>  <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>  <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>  std::vector<int> <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> </div>
392
<div class="line"><a name="l00548"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#ae39a2fcf405a541f81ffffdc36218831"> 548</a></span>  <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></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>  <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>  std::vector<float> <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> </div>
396
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span> <span class="preprocessor">#ifdef OPENMS_HAS_CUDA</span></div>
397
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span> <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>  <span class="keywordtype">int</span>* h_pos_;</div>
399
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <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>  <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>  <span class="keywordtype">void</span>* cuda_device_intens_;</div>
402
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keywordtype">void</span>* cuda_device_pos_;</div>
403
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordtype">void</span>* cuda_device_trans_intens_;</div>
404
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordtype">void</span>* cuda_device_fwd2_;</div>
405
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="keywordtype">void</span>* cuda_device_posindices_sorted_;</div>
406
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keywordtype">void</span>* cuda_device_trans_intens_sorted_;</div>
407
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="keywordtype">void</span>* cuda_device_scores_;</div>
408
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  std::vector<float> cuda_positions_, cuda_intensities_;</div>
409
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  dim3 dimGrid_, dimBlock_;</div>
410
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span> <span class="preprocessor">#endif</span></div>
411
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span> <span class="preprocessor"></span> };</div>
412
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span> </div>
413
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span> </div>
414
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <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>& a, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1cudaHelp.html">cudaHelp</a>& b);</div>
415
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span> </div>
416
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
417
<div class="line"><a name="l00573"></a><span class="lineno"><a class="line" href="namespaceOpenMS.html#a5a5872835f722f5e757e3e7782d84120"> 573</a></span>  <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>& a, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1Peak2D.html">PeakType</a>& b)</div>
418
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  {</div>
419
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keywordflow">return</span> a.<a class="code" href="classOpenMS_1_1Peak2D.html#a09903c7965f8ece31f2c1e07b41ae6dd">getIntensity</a>() > 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>  }</div>
421
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span> </div>
422
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
423
<div class="line"><a name="l00579"></a><span class="lineno"><a class="line" href="namespaceOpenMS.html#ac46a8fc51b287c355e88e3778ff61dab"> 579</a></span>  <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>& a, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1Peak2D.html">PeakType</a>& b)</div>
424
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  {</div>
425
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="keywordflow">return</span> a.<a class="code" href="classOpenMS_1_1Peak2D.html#a09903c7965f8ece31f2c1e07b41ae6dd">getIntensity</a>() < 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>  }</div>
427
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span> </div>
428
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
429
<div class="line"><a name="l00585"></a><span class="lineno"><a class="line" href="namespaceOpenMS.html#a66e95a71cb612182234eb778d0a2b83c"> 585</a></span>  <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>  {</div>
431
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="keywordflow">return</span> a-><a class="code" href="classOpenMS_1_1Peak2D.html#a09903c7965f8ece31f2c1e07b41ae6dd">getIntensity</a>() > b-><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>  }</div>
433
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span> </div>
434
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
435
<div class="line"><a name="l00591"></a><span class="lineno"><a class="line" href="namespaceOpenMS.html#a98090d3ef79d5636476a89689b4367e0"> 591</a></span>  <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>& a, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1Peak2D.html">PeakType</a>& b)</div>
436
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  {</div>
437
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="keywordflow">return</span> a.<a class="code" href="classOpenMS_1_1Peak2D.html#a6fefef82aae7a3208e71648e763d5ea4">getMZ</a>() < 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>  }</div>
439
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span> </div>
440
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
441
<div class="line"><a name="l00597"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a40a60540d9f10eb87e4066eff10b1086"> 597</a></span>  <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a40a60540d9f10eb87e4066eff10b1086">IsotopeWaveletTransform<PeakType>::IsotopeWaveletTransform</a>()</div>
442
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  {</div>
443
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  tmp_boxes_ = <span class="keyword">new</span> std::vector<std::multimap<DoubleReal, Box> >(1);</div>
444
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  av_MZ_spacing_ = 1;</div>
445
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  max_scan_size_ = 0;</div>
446
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  max_mz_cutoff_ = 3;</div>
447
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  max_num_peaks_per_pattern_ = 3;</div>
448
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  hr_data_ = <span class="keyword">false</span>;</div>
449
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  intenstype_ = <span class="stringliteral">"ref"</span>;</div>
450
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span> <span class="preprocessor">#ifdef OPENMS_HAS_CUDA</span></div>
451
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span> <span class="preprocessor"></span> largest_array_size_ = 0;</div>
452
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  num_elements_ = 0;</div>
453
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  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>  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> <span class="preprocessor">#endif</span></div>
456
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span> <span class="preprocessor"></span> }</div>
457
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span> </div>
458
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
459
<div class="line"><a name="l00615"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a0845c7908e6199d8f9a5886da052c5d3"> 615</a></span>  <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a40a60540d9f10eb87e4066eff10b1086">IsotopeWaveletTransform<PeakType>::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>  {</div>
461
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  max_charge_ = max_charge;</div>
462
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  max_scan_size_ = max_scan_size;</div>
463
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  hr_data_ = hr_data;</div>
464
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  intenstype_ = intenstype;</div>
465
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  tmp_boxes_ = <span class="keyword">new</span> std::vector<std::multimap<DoubleReal, Box> >(max_charge);</div>
466
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="keywordflow">if</span> (max_scan_size <= 0) <span class="comment">//only important for the CPU</span></div>
467
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  {</div>
468
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <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>  }</div>
470
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span> </div>
471
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  av_MZ_spacing_ = 1;</div>
472
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  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>  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> </div>
475
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span> <span class="preprocessor">#ifdef OPENMS_HAS_CUDA</span></div>
476
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span> <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>  {</div>
478
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="keywordflow">if</span> (hr_data_)</div>
479
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  {</div>
480
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  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>  }</div>
482
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  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> </div>
484
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  cuda_positions_.reserve(largest_array_size_);</div>
485
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  cuda_intensities_.reserve(largest_array_size_);</div>
486
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  indices_.resize(largest_array_size_);</div>
487
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> q = 0; q < largest_array_size_; ++q)</div>
488
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  {</div>
489
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  indices_[q] = q;</div>
490
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  }</div>
491
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span> </div>
492
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  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>  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>  }</div>
495
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <span class="keywordflow">else</span></div>
496
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  {</div>
497
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  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>  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>  <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>  <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>  psi_.reserve(to_reserve); <span class="comment">//The wavelet</span></div>
502
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  prod_.reserve(to_reserve);</div>
503
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  xs_.reserve(to_reserve);</div>
504
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  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>  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>  }</div>
507
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span> <span class="preprocessor">#else</span></div>
508
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span> <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>  {</div>
510
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <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>  <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>  psi_.reserve(to_reserve); <span class="comment">//The wavelet</span></div>
513
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  prod_.reserve(to_reserve);</div>
514
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  xs_.reserve(to_reserve);</div>
515
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  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>  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>  }</div>
518
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span> <span class="preprocessor">#endif</span></div>
519
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span> <span class="preprocessor"></span> }</div>
520
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span> </div>
521
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
522
<div class="line"><a name="l00678"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a0c0243adc4a1eb30bf62144a88181131"> 678</a></span>  <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a0c0243adc4a1eb30bf62144a88181131">IsotopeWaveletTransform<PeakType>::~IsotopeWaveletTransform</a>()</div>
523
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  {</div>
524
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span> <span class="preprocessor">#ifdef OPENMS_HAS_CUDA</span></div>
525
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span> <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>  free(h_data_);</div>
527
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <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>  free(h_pos_);</div>
529
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  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>  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> <span class="preprocessor">#endif</span></div>
532
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span> <span class="preprocessor"></span></div>
533
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <span class="keyword">delete</span> (tmp_boxes_);</div>
534
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  }</div>
535
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span> </div>
536
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
537
<div class="line"><a name="l00693"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a54c204f5b2d6a44874df21661e992224"> 693</a></span>  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a54c204f5b2d6a44874df21661e992224">IsotopeWaveletTransform<PeakType>::getTransform</a>(<a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& c_trans, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& 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>  {</div>
539
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <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>  <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>  <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>  <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>  <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> </div>
545
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> my_local_pos = 0; my_local_pos < spec_size; ++my_local_pos)</div>
546
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  {</div>
547
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  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>  old = 0; old_pos = (my_local_pos - from_max_to_left_ - 1 >= 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>  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>  c_diff = 0;</div>
551
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  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> </div>
553
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <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 < T_boundary_right; ++current_conv_pos)</div>
554
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  {</div>
555
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  <span class="keywordflow">if</span> (current_conv_pos >= spec_size)</div>
556
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  {</div>
557
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  value += 0.5 * old * min_spacing_;</div>
558
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <span class="keywordflow">break</span>;</div>
559
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  }</div>
560
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span> </div>
561
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  c_mz = c_ref[current_conv_pos].getMZ();</div>
562
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  c_diff = c_mz + origin;</div>
563
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span> </div>
564
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  <span class="comment">//Attention! The +1. has nothing to do with the charge, it is caused by the wavelet's formula (tz1).</span></div>
565
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  current = c_diff > T_boundary_left && c_diff <= 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> </div>
567
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  value += 0.5 * (current + old) * (c_mz - old_pos);</div>
568
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span> </div>
569
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  old = current;</div>
570
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  old_pos = c_mz;</div>
571
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  }</div>
572
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span> </div>
573
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span> </div>
574
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span> </div>
575
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  c_trans[my_local_pos].setIntensity(value);</div>
576
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  }</div>
577
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  }</div>
578
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span> </div>
579
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
580
<div class="line"><a name="l00736"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#ad9ced5a5293256ab54096986d28d693f"> 736</a></span>  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#ad9ced5a5293256ab54096986d28d693f">IsotopeWaveletTransform<PeakType>::getTransformHighRes</a>(<a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& c_trans, <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& 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>  {</div>
582
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  <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>  <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>  <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>  <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>  <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> </div>
588
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> my_local_pos = 0; my_local_pos < spec_size; ++my_local_pos)</div>
589
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  {</div>
590
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  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> </div>
592
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span> </div>
593
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  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>  c_diff = 0;</div>
595
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  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> </div>
597
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <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 < T_boundary_right; ++current_conv_pos)</div>
598
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  {</div>
599
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="keywordflow">if</span> (current_conv_pos >= spec_size)</div>
600
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  {</div>
601
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <span class="keywordflow">break</span>;</div>
602
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  }</div>
603
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span> </div>
604
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  c_mz = c_ref[current_conv_pos].getMZ();</div>
605
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  c_diff = c_mz + origin;</div>
606
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span> </div>
607
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="comment">//Attention! The +1. has nothing to do with the charge, it is caused by the wavelet's formula (tz1).</span></div>
608
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  current = c_diff > T_boundary_left && c_diff <= 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> </div>
610
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  value += current;</div>
611
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  }</div>
612
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span> </div>
613
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  c_trans[my_local_pos].setIntensity(value);</div>
614
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  }</div>
615
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  }</div>
616
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span> </div>
617
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
618
<div class="line"><a name="l00774"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#ab99b362c90b6915c337cc919b73b599f"> 774</a></span>  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#ab99b362c90b6915c337cc919b73b599f">IsotopeWaveletTransform<PeakType>::initializeScan</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& 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>  {</div>
620
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  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>  computeMinSpacing(c_ref);</div>
622
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  <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> </div>
624
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <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>  {</div>
626
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  <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>  <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType>::const_iterator</a> start_iter, end_iter;</div>
628
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 0; i < data_length_; ++i)</div>
629
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  {</div>
630
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  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>  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>  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>  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>  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>  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>  }</div>
637
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  }</div>
638
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  <span class="keywordflow">else</span></div>
639
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  {</div>
640
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="comment">//CHANGED</span></div>
641
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  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>  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>  }</div>
644
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  <span class="comment">//... done</span></div>
645
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span> </div>
646
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span> </div>
647
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  <span class="keywordflow">if</span> (wavelet_length > (<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>  {</div>
649
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  std::cout << <span class="stringliteral">"Warning: the extremal length of the wavelet is larger ("</span> << wavelet_length << <span class="stringliteral">") than the number of data points ("</span> << c_ref.size() << <span class="stringliteral">"). This might (!) severely affect the transform."</span> << std::endl;</div>
650
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  std::cout << <span class="stringliteral">"Minimal spacing: "</span> << min_spacing_ << std::endl;</div>
651
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  std::cout << <span class="stringliteral">"Warning/Error generated at scan with RT "</span> << c_ref.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a3da529bd3240fa0d7148484bbef0b9d7">getRT</a>() << <span class="stringliteral">"."</span> << std::endl;</div>
652
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  }</div>
653
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span> </div>
654
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <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>  from_max_to_left_ = max_index;</div>
656
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  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>  }</div>
658
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span> </div>
659
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
660
<div class="line"><a name="l00816"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#acdf960f3bc80fd3c9751bd698ca96be8"> 816</a></span>  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#acdf960f3bc80fd3c9751bd698ca96be8">IsotopeWaveletTransform<PeakType>::computeMinSpacing</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& c_ref)</div>
661
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  {</div>
662
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  min_spacing_ = INT_MAX;</div>
663
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> c_conv_pos = 1; c_conv_pos < c_ref.size(); ++c_conv_pos)</div>
664
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  {</div>
665
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  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>  }</div>
667
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  }</div>
668
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span> </div>
669
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span> <span class="preprocessor">#ifdef OPENMS_HAS_CUDA</span></div>
670
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span> <span class="preprocessor"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
671
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html">IsotopeWaveletTransform<PeakType>::finalizeScanCuda</a>()</div>
672
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  {</div>
673
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  (cudaFree(cuda_device_pos_));</div>
674
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  (cudaFree(cuda_device_intens_));</div>
675
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  (cudaFree(cuda_device_trans_intens_));</div>
676
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  (cudaFree(cuda_device_fwd2_));</div>
677
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  (cudaFree(cuda_device_trans_intens_sorted_));</div>
678
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  (cudaFree(cuda_device_posindices_sorted_));</div>
679
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  (cudaFree(cuda_device_scores_));</div>
680
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  }</div>
681
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span> </div>
682
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
683
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <span class="keywordtype">int</span> IsotopeWaveletTransform<PeakType>::initializeScanCuda(<span class="keyword">const</span> MSSpectrum<PeakType>& 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>  {</div>
685
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  data_length_ = scan.size();</div>
686
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span> </div>
687
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  std::vector<float> pre_positions(data_length_), pre_intensities(data_length_);</div>
688
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  <span class="keywordtype">float</span> c_spacing;</div>
689
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  min_spacing_ = INT_MAX;</div>
690
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  pre_positions[0] = scan[0].getMZ();</div>
691
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  pre_intensities[0] = scan[0].getIntensity();</div>
692
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span> </div>
693
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a> i = 1; i < data_length_; ++i)</div>
694
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  {</div>
695
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  pre_positions[i] = scan[i].getMZ();</div>
696
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  c_spacing = pre_positions[i] - pre_positions[i - 1];</div>
697
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  <span class="keywordflow">if</span> (c_spacing < min_spacing_)</div>
698
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  {</div>
699
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  min_spacing_ = c_spacing;</div>
700
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  }</div>
701
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  pre_intensities[i] = scan[i].getIntensity();</div>
702
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  }</div>
703
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  <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>  {</div>
705
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  std::cout << <span class="stringliteral">"Scan consits of a single point. Unable to compute transform."</span> << std::endl;</div>
706
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  <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>  }</div>
708
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span> </div>
709
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  <span class="comment">//Estimating the wave_length ...</span></div>
710
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  <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>  <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>  {</div>
713
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <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>  <span class="keyword">typename</span> MSSpectrum<PeakType>::const_iterator start_iter, end_iter;</div>
715
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a> i = 0; i < data_length_; ++i)</div>
716
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  {</div>
717
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  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>  start_iter = scan.MZEnd(scan[i].getMZ());</div>
719
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  end_iter = scan.MZBegin(scan[i].getMZ() + c_mz_cutoff);</div>
720
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  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>  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>  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>  }</div>
724
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  }</div>
725
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <span class="keywordflow">else</span></div>
726
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  {</div>
727
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <span class="comment">//CHANGED</span></div>
728
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  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>  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>  }</div>
731
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  <span class="comment">//... done</span></div>
732
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span> </div>
733
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  <span class="keywordflow">if</span> (wavelet_length > data_length_ || wavelet_length == 1) <span class="comment">//==1, because of 'ceil'</span></div>
734
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  {</div>
735
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  std::cout << <span class="stringliteral">"Warning: the extremal length of the wavelet is larger ("</span> << wavelet_length << <span class="stringliteral">") than the number of data points ("</span> << data_length_ << <span class="stringliteral">"). This might (!) severely affect the transform."</span> << std::endl;</div>
736
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  std::cout << <span class="stringliteral">"Minimal spacing: "</span> << min_spacing_ << std::endl;</div>
737
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  std::cout << <span class="stringliteral">"Warning/Error generated at scan with RT "</span> << scan.getRT() << <span class="stringliteral">"."</span> << std::endl;</div>
738
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  }</div>
739
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span> </div>
740
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  <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>  <span class="keywordflow">if</span> (hr_data_)</div>
742
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  {</div>
743
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  max_index = quarter_length;</div>
744
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  }</div>
745
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  <span class="keywordflow">else</span></div>
746
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  {</div>
747
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  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>  }</div>
749
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  from_max_to_left_ = max_index;</div>
750
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  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> </div>
752
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  <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>  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> </div>
755
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  <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>  overall_size_ = wavelet_length - 1 + data_length_ + missing_points;</div>
757
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span> </div>
758
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  num_elements_ = overall_size_;</div>
759
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  <a class="code" href="classInt.html">Int</a> dev_num_elements = 1, tmp = overall_size_ >> 1;</div>
760
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span> </div>
761
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  <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>  <span class="keywordflow">while</span> (tmp)</div>
763
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  {</div>
764
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  dev_num_elements <<= 1;</div>
765
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  tmp >>= 1;</div>
766
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  }</div>
767
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span> </div>
768
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <span class="keywordflow">if</span> (num_elements_ > dev_num_elements)</div>
769
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  {</div>
770
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  dev_num_elements <<= 1;</div>
771
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  }</div>
772
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span> </div>
773
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  <span class="keywordflow">if</span> (dev_num_elements < <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>  {</div>
775
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  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>  }</div>
777
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span> </div>
778
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  overall_size_ = dev_num_elements;</div>
779
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span> </div>
780
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  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>  <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>  <span class="keywordtype">float</span> first_pos = pre_positions[0];</div>
783
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  <span class="keywordflow">for</span> (<a class="code" href="classInt.html">Int</a> i = 0; i < from_max_to_left_; ++i)</div>
784
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  {</div>
785
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  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>  }</div>
787
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span> </div>
788
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a> i = 0; i < data_length_; ++i)</div>
789
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  {</div>
790
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  cuda_positions_[from_max_to_left_ + i] = pre_positions[i];</div>
791
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  cuda_intensities_[from_max_to_left_ + i] = pre_intensities[i];</div>
792
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  }</div>
793
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span> </div>
794
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  <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>  <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a> i = 0; i < 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>  {</div>
797
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  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>  }</div>
799
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span> </div>
800
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
801
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span> <span class="preprocessor"></span> std::stringstream name; name << <span class="stringliteral">"cuda_input_"</span> << scan.getRT() << <span class="stringliteral">".out\0"</span>;</div>
802
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  std::fstream outfile(name.str().c_str(), std::ios::out);</div>
803
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < overall_size_; ++i)</div>
804
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  outfile << cuda_positions_[i] << <span class="stringliteral">" "</span> << cuda_intensities_[i] << std::endl;</div>
805
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  outfile.close();</div>
806
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span> <span class="preprocessor">#endif</span></div>
807
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span> <span class="preprocessor"></span></div>
808
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span> </div>
809
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  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>  to_compute_ = problem_size;</div>
811
<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  dimGrid_ = dim3((data_length_ + missing_points) / problem_size);</div>
812
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span> </div>
813
<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  (cudaMalloc(&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>  (cudaMalloc(&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>  (cudaMemcpy(cuda_device_pos_, &(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>  (cudaMalloc(&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>  (cudaMemcpy(cuda_device_intens_, &(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>  (cudaMalloc(&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>  (cudaMalloc(&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>  (cudaMalloc(&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> </div>
822
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  c_sorted_candidate_.resize(overall_size_);</div>
823
<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  scores_.resize(data_length_);</div>
824
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  zeros_.resize(overall_size_);</div>
825
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  memset(&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> </div>
827
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  (cudaMalloc(&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> </div>
829
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  <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>  }</div>
831
<div class="line"><a name="l00987"></a><span class="lineno"> 987</span> </div>
832
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
833
<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  <span class="keywordtype">void</span> IsotopeWaveletTransform<PeakType>::getTransformCuda(TransSpectrum& 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>  {</div>
835
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
836
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span> <span class="preprocessor"></span> std::cout << <span class="stringliteral">"res in vector"</span> << std::endl;</div>
837
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  std::vector<float> res(overall_size_, 0);</div>
838
<div class="line"><a name="l00994"></a><span class="lineno"> 994</span> <span class="preprocessor">#endif</span></div>
839
<div class="line"><a name="l00995"></a><span class="lineno"> 995</span> <span class="preprocessor"></span> (cudaMemcpy(cuda_device_trans_intens_, &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> </div>
841
<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  (cudaMemcpy(cuda_device_fwd2_, &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>  <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>  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> </div>
845
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  (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> </div>
847
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  (cudaMemcpy(&((*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> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
849
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> <span class="preprocessor"></span> (cudaMemcpy(&(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>  <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a> i = 0; i < data_length_; ++i)</div>
851
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  {</div>
852
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  c_trans.setTransIntensity(i, res[i]);</div>
853
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  }</div>
854
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span> <span class="preprocessor">#endif</span></div>
855
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> <span class="preprocessor"></span> }</div>
856
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> </div>
857
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
858
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  <span class="keywordtype">int</span> IsotopeWaveletTransform<PeakType>::sortCuda(MSSpectrum<PeakType>& sorted)</div>
859
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  {</div>
860
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  (cudaMemcpy(cuda_device_posindices_sorted_, &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>  <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> </div>
863
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  <span class="keywordflow">if</span> (gpu_index < 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>  {</div>
865
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  <span class="keywordflow">return</span> gpu_index;</div>
866
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  }</div>
867
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> </div>
868
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  (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>  (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> </div>
871
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaba0996d26f7be2572973245b51852757">UInt</a> i = 0; i < (overall_size_ - gpu_index); ++i)</div>
872
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  {</div>
873
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  sorted[i].setIntensity(h_data_[i]);</div>
874
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  sorted[i].setMZ(cuda_positions_[h_pos_[i]]);</div>
875
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  }</div>
876
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> </div>
877
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  <span class="keywordflow">return</span> gpu_index;</div>
878
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  }</div>
879
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> </div>
880
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
881
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  <span class="keywordtype">void</span> IsotopeWaveletTransform<PeakType>::identifyChargeCuda(<span class="keyword">const</span> TransSpectrum& candidates,</div>
882
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  <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>  {</div>
884
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  <span class="keyword">const</span> MSSpectrum<PeakType>& ref(*candidates.getRefSpectrum());</div>
885
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  <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>  <span class="keyword">typename</span> MSSpectrum<PeakType>::iterator iter, bound_iter;</div>
887
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  <span class="keyword">typename</span> MSSpectrum<PeakType>::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>  <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> </div>
890
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  <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>  <span class="keywordflow">if</span> (gpu_index < 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>  {</div>
893
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  <span class="keywordflow">return</span>;</div>
894
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  }</div>
895
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span> </div>
896
<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  std::vector<UInt> processed(data_length_, 0);</div>
897
<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  <span class="keywordflow">if</span> (ampl_cutoff < 0)</div>
898
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  {</div>
899
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  threshold = 0;</div>
900
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  }</div>
901
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  <span class="keywordflow">else</span></div>
902
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  {</div>
903
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  c_av_intens = getAvIntens_(candidates);</div>
904
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  c_sd_intens = getSdIntens_(candidates, c_av_intens);</div>
905
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  threshold = ampl_cutoff * c_sd_intens + c_av_intens;</div>
906
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  }</div>
907
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span> </div>
908
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  <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> </div>
910
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  (cudaMemcpy(cuda_device_scores_, &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> </div>
912
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  <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>  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> </div>
915
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  (cudaMemcpy(&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> </div>
917
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  std::vector<float>::iterator score_iter;</div>
918
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
919
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span> <span class="preprocessor"></span> std::stringstream stream;</div>
920
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  stream << <span class="stringliteral">"sorted_gpu_"</span> << candidates.getRT() << <span class="stringliteral">"_"</span> << c + 1 << <span class="stringliteral">".trans\0"</span>;</div>
921
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  std::ofstream ofile(stream.str().c_str());</div>
922
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  <span class="keywordflow">for</span> (c_index = overall_size_ - gpu_index - 1, score_iter = scores_.begin() + num_of_scores - 1; c_index >= 0; --c_index, --score_iter)</div>
923
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  {</div>
924
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  ofile << c_sorted_candidate_[c_index].getMZ() << <span class="stringliteral">"\t"</span> << c_sorted_candidate_[c_index].getIntensity() << <span class="stringliteral">"\t"</span> << *score_iter << std::endl;</div>
925
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  }</div>
926
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  ofile.close();</div>
927
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> <span class="preprocessor">#endif</span></div>
928
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span> <span class="preprocessor"></span></div>
929
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  <span class="keywordflow">for</span> (c_index = overall_size_ - gpu_index - 1, score_iter = scores_.begin() + num_of_scores - 1; c_index >= 0; --c_index, --score_iter)</div>
930
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  {</div>
931
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  seed_mz = c_sorted_candidate_[c_index].getMZ();</div>
932
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> </div>
933
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  <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>  <span class="comment">//seed_iter = ref.MZBegin(seed_mz);</span></div>
935
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  <span class="comment">//index = distance(ref.begin(), seed_iter);</span></div>
936
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  <span class="comment">//... with:</span></div>
937
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  index = h_pos_[c_index] - from_max_to_left_;</div>
938
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  seed_iter = ref.begin() + index;</div>
939
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span> </div>
940
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  <span class="keywordflow">if</span> (seed_iter == ref.end() || processed[distance(ref.begin(), seed_iter)] || index <= 0)</div>
941
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  {</div>
942
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  <span class="keywordflow">continue</span>;</div>
943
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  }</div>
944
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span> </div>
945
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  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>  <span class="comment">//Mark the region as processed</span></div>
947
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  <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>  <span class="comment">//even when score <=0; otherwise we would look around the maximum's position unless</span></div>
949
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  <span class="comment">//any significant point is found</span></div>
950
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  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>  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> </div>
953
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  <span class="keywordflow">if</span> (iter_end == ref.end())</div>
954
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  {</div>
955
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  --iter_end;</div>
956
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  }</div>
957
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> </div>
958
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  MZ_start = distance(ref.begin(), iter_start);</div>
959
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  MZ_end = distance(ref.begin(), iter_end);</div>
960
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span> </div>
961
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  memset(&(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> </div>
963
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  c_score = *score_iter;</div>
964
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span> </div>
965
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  <span class="keywordflow">if</span> (c_score <= 0 && c_score != -1000)</div>
966
<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  {</div>
967
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  <span class="keywordflow">continue</span>;</div>
968
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  }</div>
969
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span> </div>
970
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  <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>  <span class="comment">//Do ***NOT*** move this further down!</span></div>
972
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span> </div>
973
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  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> </div>
975
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  <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>  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>  iter2 = candidates.MZBegin(help_mz);</div>
978
<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span> </div>
979
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  <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>  {</div>
981
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  <span class="keywordflow">continue</span>;</div>
982
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  }</div>
983
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span> </div>
984
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  <span class="keywordflow">if</span> (fabs(iter2->getMZ() - seed_mz) > 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>  {</div>
986
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  <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>  <span class="keywordflow">if</span> (iter2 != candidates.end())</div>
988
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  {</div>
989
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  <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>  push2TmpBox_(iter2->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>  getLinearInterpolation((iter2 - 1)->getMZ(), candidates.getTransIntensity(dist - 1), help_mz, iter2->getMZ(), candidates.getTransIntensity(dist)),</div>
992
<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  candidates.getRT(), MZ_start, MZ_end);</div>
993
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  }</div>
994
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  }</div>
995
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span> </div>
996
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  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>  iter2 = candidates.MZBegin(help_mz);</div>
998
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span> </div>
999
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>  <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>  {</div>
1001
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  <span class="keywordflow">continue</span>;</div>
1002
<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  }</div>
1003
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span> </div>
1004
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  <span class="keywordflow">if</span> (fabs(iter2->getMZ() - seed_mz) > 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>  {</div>
1006
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  <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>  <span class="keywordflow">if</span> (iter2 != candidates.end())</div>
1008
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  {</div>
1009
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  <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>  push2TmpBox_(iter2->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>  getLinearInterpolation((iter2 - 1)->getMZ(), candidates.getTransIntensity(dist - 1), help_mz, iter2->getMZ(), candidates.getTransIntensity(dist)),</div>
1012
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  candidates.getRT(), MZ_start, MZ_end);</div>
1013
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  }</div>
1014
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  }</div>
1015
<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  }</div>
1016
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span> </div>
1017
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  clusterSeeds_(candidates, ref, scan_index, c, check_PPMs);</div>
1018
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  }</div>
1019
<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span> </div>
1020
<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span> <span class="preprocessor">#endif</span></div>
1021
<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span> <span class="preprocessor"></span></div>
1022
<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span> </div>
1023
<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
1024
<div class="line"><a name="l01180"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#ad7b38b52b1b16ca069e80ff8b8618295"> 1180</a></span>  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#ad7b38b52b1b16ca069e80ff8b8618295">IsotopeWaveletTransform<PeakType>::identifyCharge</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& candidates,</div>
1025
<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& 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>  {</div>
1027
<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  <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>  <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1ConstRefVector.html">ConstRefVector<MSSpectrum<PeakType></a> >::iterator iter;</div>
1029
<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType>::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>  <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>  <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> </div>
1033
<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>  <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a> diffed(candidates);</div>
1034
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>  diffed[0].setIntensity(0); diffed[scan_size - 1].setIntensity(0);</div>
1035
<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span> </div>
1036
<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
1037
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span> <span class="preprocessor"></span> std::stringstream stream;</div>
1038
<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  stream << <span class="stringliteral">"diffed_"</span> << ref.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a3da529bd3240fa0d7148484bbef0b9d7">getRT</a>() << <span class="stringliteral">"_"</span> << c + 1 << <span class="stringliteral">".trans\0"</span>;</div>
1039
<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>  std::ofstream ofile(stream.str().c_str());</div>
1040
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span> <span class="preprocessor">#endif</span></div>
1041
<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span> <span class="preprocessor"></span></div>
1042
<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  <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>  {</div>
1044
<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>  <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 0; i < scan_size - 2; ++i)</div>
1045
<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  {</div>
1046
<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>  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>  bwd = (share - candidates[i].getIntensity()) / (share_pos - candidates[i].getMZ());</div>
1048
<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  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> </div>
1050
<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  <span class="keywordflow">if</span> (!(bwd >= 0 && fwd <= 0) || share > ref[i + 1].getIntensity())</div>
1051
<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  {</div>
1052
<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>  diffed[i + 1].setIntensity(0);</div>
1053
<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  }</div>
1054
<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span> </div>
1055
<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
1056
<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span> <span class="preprocessor"></span> ofile << diffed[i + 1].getMZ() << <span class="stringliteral">"\t"</span> << diffed[i + 1].getIntensity() << std::endl;</div>
1057
<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span> <span class="preprocessor">#endif</span></div>
1058
<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span> <span class="preprocessor"></span> }</div>
1059
<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  }</div>
1060
<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  <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>  {</div>
1062
<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>  <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 0; i < scan_size - 2; ++i)</div>
1063
<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>  {</div>
1064
<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>  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>  bwd = (share - candidates[i].getIntensity()) / (share_pos - candidates[i].getMZ());</div>
1066
<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>  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> </div>
1068
<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  <span class="keywordflow">if</span> (!(bwd >= 0 && fwd <= 0))</div>
1069
<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  {</div>
1070
<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  diffed[i + 1].setIntensity(0);</div>
1071
<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>  }</div>
1072
<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span> </div>
1073
<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
1074
<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span> <span class="preprocessor"></span> ofile << diffed[i + 1].getMZ() << <span class="stringliteral">"\t"</span> << diffed[i + 1].getIntensity() << std::endl;</div>
1075
<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span> <span class="preprocessor">#endif</span></div>
1076
<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span> <span class="preprocessor"></span> }</div>
1077
<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>  }</div>
1078
<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
1079
<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span> <span class="preprocessor"></span> ofile.close();</div>
1080
<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span> <span class="preprocessor">#endif</span></div>
1081
<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span> <span class="preprocessor"></span></div>
1082
<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  <a class="code" href="classOpenMS_1_1ConstRefVector.html">ConstRefVector<MSSpectrum<PeakType></a> > c_sorted_candidate_(diffed.begin(), diffed.end());</div>
1083
<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span> </div>
1084
<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>  <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>  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> </div>
1087
<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
1088
<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span> <span class="preprocessor"></span> std::stringstream stream2;</div>
1089
<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  stream2 << <span class="stringliteral">"sorted_cpu_"</span> << candidates.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a3da529bd3240fa0d7148484bbef0b9d7">getRT</a>() << <span class="stringliteral">"_"</span> << c + 1 << <span class="stringliteral">".trans\0"</span>;</div>
1090
<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  std::ofstream ofile2(stream2.str().c_str());</div>
1091
<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>  <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>  {</div>
1093
<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>  ofile2 << iter->getMZ() << <span class="stringliteral">"\t"</span> << iter->getIntensity() << std::endl;</div>
1094
<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>  }</div>
1095
<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>  ofile2.close();</div>
1096
<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span> <span class="preprocessor">#endif</span></div>
1097
<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span> <span class="preprocessor"></span></div>
1098
<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>  std::vector<UInt> processed(scan_size, 0);</div>
1099
<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span> </div>
1100
<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>  <span class="keywordflow">if</span> (ampl_cutoff < 0)</div>
1101
<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>  {</div>
1102
<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  threshold = 0;</div>
1103
<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  }</div>
1104
<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  <span class="keywordflow">else</span></div>
1105
<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>  {</div>
1106
<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  c_av_intens = getAvIntens_(candidates);</div>
1107
<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  c_sd_intens = getSdIntens_(candidates, c_av_intens);</div>
1108
<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  threshold = ampl_cutoff * c_sd_intens + c_av_intens;</div>
1109
<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>  }</div>
1110
<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span> </div>
1111
<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>  <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>  {</div>
1113
<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>  <span class="keywordflow">if</span> (iter->getIntensity() <= 0)</div>
1114
<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>  {</div>
1115
<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>  <span class="keywordflow">break</span>;</div>
1116
<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>  }</div>
1117
<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span> </div>
1118
<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>  seed_mz = iter->getMZ();</div>
1119
<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>  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> </div>
1121
<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>  <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>  {</div>
1123
<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>  <span class="keywordflow">continue</span>;</div>
1124
<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>  }</div>
1125
<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span> </div>
1126
<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>  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>  <span class="comment">//Mark the region as processed</span></div>
1128
<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>  <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>  <span class="comment">//even when score <=0; otherwise we would look around the maximum's position unless</span></div>
1130
<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>  <span class="comment">//any significant point is found</span></div>
1131
<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>  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>  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>  <span class="keywordflow">if</span> (iter_end == ref.end())</div>
1134
<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>  {</div>
1135
<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>  --iter_end;</div>
1136
<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>  }</div>
1137
<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span> </div>
1138
<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>  MZ_start = distance(ref.begin(), iter_start);</div>
1139
<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>  MZ_end = distance(ref.begin(), iter_end);</div>
1140
<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span> </div>
1141
<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>  memset(&(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> </div>
1143
<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>  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> </div>
1145
<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
1146
<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span> <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>  std::cout << seed_mz << <span class="stringliteral">"\t"</span> << c_score << std::endl;</div>
1148
<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span> <span class="preprocessor">#endif</span></div>
1149
<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span> <span class="preprocessor"></span></div>
1150
<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>  <span class="keywordflow">if</span> (c_score <= 0 && c_score != -1000)</div>
1151
<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>  {</div>
1152
<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>  <span class="keywordflow">continue</span>;</div>
1153
<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>  }</div>
1154
<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span> </div>
1155
<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  <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>  <span class="comment">//Do ***NOT*** move this further down!</span></div>
1157
<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>  push2TmpBox_(seed_mz, scan_index, c, c_score, iter->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> </div>
1159
<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>  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>  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>  <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>  {</div>
1163
<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>  <span class="keywordflow">continue</span>;</div>
1164
<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>  }</div>
1165
<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span> </div>
1166
<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>  <span class="keywordflow">if</span> (fabs(iter2->getMZ() - seed_mz) > 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>  {</div>
1168
<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>  <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>  <span class="keywordflow">if</span> (iter2 != candidates.end())</div>
1170
<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>  {</div>
1171
<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>  push2TmpBox_(iter2->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>  }</div>
1173
<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>  }</div>
1174
<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span> </div>
1175
<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>  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>  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>  <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>  {</div>
1179
<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>  <span class="keywordflow">continue</span>;</div>
1180
<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>  }</div>
1181
<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span> </div>
1182
<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>  <span class="keywordflow">if</span> (fabs(iter2->getMZ() - seed_mz) > 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>  {</div>
1184
<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>  <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>  <span class="keywordflow">if</span> (iter2 != candidates.end())</div>
1186
<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>  {</div>
1187
<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>  push2TmpBox_(iter2->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>  }</div>
1189
<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>  }</div>
1190
<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>  }</div>
1191
<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span> </div>
1192
<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>  clusterSeeds_(candidates, ref, scan_index, c, check_PPMs);</div>
1193
<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>  }</div>
1194
<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span> </div>
1195
<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span> <span class="preprocessor">#if defined(OPENMS_HAS_TBB) && defined(OPENMS_HAS_CUDA)</span></div>
1196
<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span> <span class="preprocessor"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
1197
<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#ade38c945f9f72617b16d2ffeb72a27cd">IsotopeWaveletTransform<PeakType>::mergeFeatures</a>(<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html">IsotopeWaveletTransform<PeakType></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>  {</div>
1199
<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>  <span class="keyword">typename</span> std::multimap<DoubleReal, Box>::iterator front_iter, end_iter, best_match, help_iter;</div>
1200
<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span> </div>
1201
<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>  <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>  <span class="keywordflow">for</span> (end_iter = later_iwt-><a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a7c937464c726b102d04846c420349f3a">closed_boxes_</a>.begin(); end_iter != later_iwt-><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>  {</div>
1204
<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>  closed_boxes_.insert(*end_iter);</div>
1205
<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>  }</div>
1206
<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span> </div>
1207
<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>  <span class="keyword">typename</span> std::multimap<DoubleReal, Box>& end_container(this->end_boxes_);</div>
1208
<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>  <span class="keyword">typename</span> std::multimap<DoubleReal, Box>& front_container(later_iwt-><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> </div>
1210
<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
1211
<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span> <span class="preprocessor"></span> std::cout << <span class="stringliteral">"FontBox: "</span> << front_container.size() << std::endl;</div>
1212
<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>  <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>  std::cout << front_iter->first << <span class="stringliteral">"\t"</span> << front_iter->second.size() << std::endl;</div>
1214
<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span> </div>
1215
<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>  std::cout << <span class="stringliteral">"EndBox: "</span> << end_container.size() << std::endl;</div>
1216
<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>  <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>  std::cout << front_iter->first << <span class="stringliteral">"\t"</span> << front_iter->second.size() << std::endl;</div>
1218
<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span> <span class="preprocessor">#endif</span></div>
1219
<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span> <span class="preprocessor"></span></div>
1220
<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>  <span class="keyword">typename</span> std::multimap<UInt, BoxElement>::iterator biter;</div>
1221
<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span> </div>
1222
<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>  <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>  <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>  <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>  {</div>
1226
<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>  best_match = end_container.end(); best_dist = INT_MAX;</div>
1227
<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>  <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>  <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>  {</div>
1230
<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>  c = 0;</div>
1231
<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>  <span class="keywordflow">for</span> (biter = front_iter->second.begin(); biter != front_iter->second.end(); ++biter)</div>
1232
<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>  {</div>
1233
<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>  c = std::max(c, biter->second.c);</div>
1234
<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>  }</div>
1235
<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span> </div>
1236
<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
1237
<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span> <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Trying to match: "</span> << end_iter->first << <span class="stringliteral">" to front "</span> << front_iter->first << std::endl;</div>
1238
<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span> <span class="preprocessor">#endif</span></div>
1239
<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span> <span class="preprocessor"></span></div>
1240
<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>  c_dist = fabs(end_iter->first - front_iter->first);</div>
1241
<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>  <span class="keywordflow">if</span> (c_dist < <a class="code" href="namespaceOpenMS_1_1Constants.html#ac5bda598608da7b58538d2383744adbe">Constants::IW_HALF_NEUTRON_MASS</a> / (c + 1.) && c_dist < best_dist)</div>
1242
<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>  {</div>
1243
<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
1244
<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span> <span class="preprocessor"></span> std::cout << <span class="stringliteral">"best match "</span> << front_iter->second.begin()->first << <span class="stringliteral">"\t"</span> << (--(end_iter->second.end()))->first << std::endl;</div>
1245
<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span> <span class="preprocessor">#endif</span></div>
1246
<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span> <span class="preprocessor"></span> <span class="keywordflow">if</span> ((front_iter->second.begin()->first - (--(end_iter->second.end()))->first) <= RT_interleave + 1)</div>
1247
<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>  {</div>
1248
<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>  <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>  best_match = end_iter;</div>
1250
<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>  best_dist = c_dist;</div>
1251
<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>  }</div>
1252
<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>  }</div>
1253
<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>  }</div>
1254
<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>  <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>  {</div>
1256
<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>  <span class="keywordflow">if</span> (front_iter->second.size() >= RT_votes_cutoff)</div>
1257
<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>  {</div>
1258
<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>  closed_boxes_.insert(*front_iter);</div>
1259
<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>  <span class="comment">//extendBox_ (map, front_iter->second);</span></div>
1260
<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>  }</div>
1261
<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>  ++front_iter;</div>
1262
<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>  }</div>
1263
<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>  <span class="keywordflow">else</span> <span class="comment">//That's the funny part</span></div>
1264
<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>  {</div>
1265
<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
1266
<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span> <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Merging the boxes: "</span> << front_iter->first << <span class="stringliteral">"\t"</span> << best_match->first << std::endl;</div>
1267
<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span> <span class="preprocessor">#endif</span></div>
1268
<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span> <span class="preprocessor"></span></div>
1269
<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>  front_iter->second.insert(best_match->second.begin(), best_match->second.end());</div>
1270
<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>  Box replacement(front_iter->second);</div>
1271
<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span> </div>
1272
<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>  <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>  <a class="code" href="group__Concept.html#gace75bfb1aba684e874dffee13738bd15">DoubleReal</a> c_mz = front_iter->first * (front_iter->second.size() - best_match->second.size()) + best_match->first * best_match->second.size();</div>
1274
<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>  c_mz /= ((<a class="code" href="group__Concept.html#gace75bfb1aba684e874dffee13738bd15">DoubleReal</a>) (front_iter->second.size()));</div>
1275
<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span> </div>
1276
<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>  help_iter = front_iter;</div>
1277
<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>  ++help_iter;</div>
1278
<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>  std::pair<DoubleReal, std::multimap<UInt, BoxElement> > help3(c_mz, replacement);</div>
1279
<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>  closed_boxes_.insert(help3);</div>
1280
<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>  <span class="comment">//extendBox_ (map, help3.second);</span></div>
1281
<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>  front_container.erase(front_iter);</div>
1282
<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>  end_container.erase(best_match);</div>
1283
<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>  front_iter = help_iter;</div>
1284
<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>  }</div>
1285
<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>  }</div>
1286
<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span> </div>
1287
<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>  <span class="comment">//Merge the rest in end_container</span></div>
1288
<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>  <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>  {</div>
1290
<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>  <span class="keywordflow">if</span> (end_iter->second.size() >= RT_votes_cutoff)</div>
1291
<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>  {</div>
1292
<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>  closed_boxes_.insert(*end_iter);</div>
1293
<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>  <span class="comment">//extendBox_ (map, end_iter->second);</span></div>
1294
<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>  }</div>
1295
<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>  }</div>
1296
<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>  }</div>
1297
<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span> </div>
1298
<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span> <span class="preprocessor">#endif</span></div>
1299
<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span> <span class="preprocessor"></span></div>
1300
<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span> </div>
1301
<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
1302
<div class="line"><a name="l01458"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#aa6ef3e67df6ac4e38a3b4c26f4709078"> 1458</a></span>  <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a93b2fba796a1b0b3364ee6ce60001843">IsotopeWaveletTransform<PeakType>::scoreThis_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& candidate,</div>
1303
<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>  <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>  {</div>
1305
<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>  <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>  <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType>::const_iterator</a> c_left_iter2, c_right_iter2;</div>
1307
<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>  <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>  <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>  <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> </div>
1311
<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>  <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>  <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> </div>
1314
<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>  std::vector<DoubleReal> positions(end);</div>
1315
<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>  <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> i = 0; i < end; ++i)</div>
1316
<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>  {</div>
1317
<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>  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>  }</div>
1319
<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span> </div>
1320
<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>  <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>  <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>  <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> v = 1; v <= end; ++v, ++p_h_ind)</div>
1323
<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>  {</div>
1324
<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>  <span class="keywordflow">do</span></div>
1325
<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>  {</div>
1326
<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>  <span class="keywordflow">if</span> (start_index < signal_size - 1)</div>
1327
<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>  ++start_index;</div>
1328
<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>  <span class="keywordflow">else</span></div>
1329
<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>  <span class="keywordflow">break</span>;</div>
1330
<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>  }</div>
1331
<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>  <span class="keywordflow">while</span> (candidate[start_index].getMZ() < positions[v - 1]);</div>
1332
<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span> </div>
1333
<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>  <span class="keywordflow">if</span> (start_index <= 0 || start_index >= signal_size - 1) <span class="comment">//unable to interpolate</span></div>
1334
<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>  {</div>
1335
<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>  <span class="keywordflow">continue</span>;</div>
1336
<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>  }</div>
1337
<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span> </div>
1338
<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>  c_left_iter2 = candidate.begin() + start_index - 1;</div>
1339
<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>  c_right_iter2 = c_left_iter2 + 1;</div>
1340
<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span> </div>
1341
<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>  c_val = c_left_iter2->getIntensity() + (c_right_iter2->getIntensity() - c_left_iter2->getIntensity()) / (c_right_iter2->getMZ() - c_left_iter2->getMZ()) * (positions[v - 1] - c_left_iter2->getMZ());</div>
1342
<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span> </div>
1343
<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>  <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>  {</div>
1345
<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>  l_score = c_score;</div>
1346
<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>  mid_val = c_val;</div>
1347
<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>  }</div>
1348
<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span> </div>
1349
<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>  <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>  {</div>
1351
<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>  c_score -= c_val;</div>
1352
<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
1353
<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span> <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>  std::cout << -c_val << std::endl;</div>
1355
<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span> <span class="preprocessor">#endif</span></div>
1356
<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span> <span class="preprocessor"></span> }</div>
1357
<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>  <span class="keywordflow">else</span></div>
1358
<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>  {</div>
1359
<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>  c_score += c_val;</div>
1360
<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
1361
<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span> <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>  std::cout << c_val << std::endl;</div>
1363
<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span> <span class="preprocessor">#endif</span></div>
1364
<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span> <span class="preprocessor"></span> }</div>
1365
<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span> </div>
1366
<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span> </div>
1367
<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>  start_index = distance(candidate.begin(), c_left_iter2);</div>
1368
<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>  }</div>
1369
<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span> </div>
1370
<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
1371
<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span> <span class="preprocessor"></span> std::ofstream ofile_score(<span class="stringliteral">"scores.dat"</span>, ios::app);</div>
1372
<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>  std::ofstream ofile_check_score(<span class="stringliteral">"check_scores.dat"</span>, ios::app);</div>
1373
<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>  ofile_score.close();</div>
1374
<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>  ofile_check_score.close();</div>
1375
<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span> <span class="preprocessor">#endif</span></div>
1376
<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span> <span class="preprocessor"></span></div>
1377
<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
1378
<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span> <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>  std::cout << <span class="stringliteral">"final_score: "</span> << seed_mz << <span class="stringliteral">"\t"</span> << c_score << <span class="stringliteral">"\t l_score: "</span> << l_score << <span class="stringliteral">"\t"</span> << c_score - l_score - mid_val << <span class="stringliteral">"\t"</span> << c_score - mid_val << <span class="stringliteral">"\t"</span> << ampl_cutoff << std::endl;</div>
1380
<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span> <span class="preprocessor">#endif</span></div>
1381
<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span> <span class="preprocessor"></span></div>
1382
<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>  <span class="keywordflow">if</span> (c_score - mid_val <= 0)</div>
1383
<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>  {</div>
1384
<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>  <span class="keywordflow">return</span> 0;</div>
1385
<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>  }</div>
1386
<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span> </div>
1387
<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>  <span class="keywordflow">if</span> (c_score - mid_val <= ampl_cutoff)</div>
1388
<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>  {</div>
1389
<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>  <span class="keywordflow">return</span> -1000;</div>
1390
<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>  }</div>
1391
<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span> </div>
1392
<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>  <span class="keywordflow">if</span> (l_score <= 0 || c_score - l_score - mid_val <= 0)</div>
1393
<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>  {</div>
1394
<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>  <span class="keywordflow">return</span> 0;</div>
1395
<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>  }</div>
1396
<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span> </div>
1397
<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>  <span class="keywordflow">return</span> c_score;</div>
1398
<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>  }</div>
1399
<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span> </div>
1400
<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
1401
<div class="line"><a name="l01557"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a93b2fba796a1b0b3364ee6ce60001843"> 1557</a></span>  <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a93b2fba796a1b0b3364ee6ce60001843">IsotopeWaveletTransform<PeakType>::scoreThis_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html">TransSpectrum</a>& candidate,</div>
1402
<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>  <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>  {</div>
1404
<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>  <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>  <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType>::const_iterator</a> c_left_iter2, c_right_iter2;</div>
1406
<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>  <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> </div>
1408
<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>  <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>  <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> </div>
1411
<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>  std::vector<DoubleReal> positions(end);</div>
1412
<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>  <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> i = 0; i < end; ++i)</div>
1413
<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>  {</div>
1414
<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>  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>  }</div>
1416
<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span> </div>
1417
<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>  <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>  <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>  <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> v = 1; v <= end; ++v, ++p_h_ind)</div>
1420
<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>  {</div>
1421
<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>  <span class="keywordflow">do</span></div>
1422
<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>  {</div>
1423
<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>  <span class="keywordflow">if</span> (start_index < signal_size - 1)</div>
1424
<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>  ++start_index;</div>
1425
<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>  <span class="keywordflow">else</span></div>
1426
<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>  <span class="keywordflow">break</span>;</div>
1427
<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>  }</div>
1428
<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>  <span class="keywordflow">while</span> (candidate.<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a9c10530886aa26b8dc86fd13846907e1">getMZ</a>(start_index) < positions[v - 1]);</div>
1429
<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span> </div>
1430
<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>  <span class="keywordflow">if</span> (start_index <= 0 || start_index >= signal_size - 1) <span class="comment">//unable to interpolate</span></div>
1431
<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>  {</div>
1432
<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>  <span class="keywordflow">continue</span>;</div>
1433
<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>  }</div>
1434
<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span> </div>
1435
<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>  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>  c_right_iter2 = c_left_iter2 + 1;</div>
1437
<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span> </div>
1438
<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>  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->getMZ() - c_left_iter2->getMZ()) * (positions[v - 1] - c_left_iter2->getMZ());</div>
1439
<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>  <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>  {</div>
1441
<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>  l_score = c_score;</div>
1442
<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>  mid_val = c_val;</div>
1443
<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>  }</div>
1444
<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span> </div>
1445
<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>  <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>  {</div>
1447
<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>  c_score -= c_val;</div>
1448
<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>  }</div>
1449
<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>  <span class="keywordflow">else</span></div>
1450
<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>  {</div>
1451
<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>  c_score += c_val;</div>
1452
<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>  }</div>
1453
<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span> </div>
1454
<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>  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>  }</div>
1456
<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span> </div>
1457
<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
1458
<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span> <span class="preprocessor"></span> std::ofstream ofile_score(<span class="stringliteral">"scores.dat"</span>, ios::app);</div>
1459
<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>  std::ofstream ofile_check_score(<span class="stringliteral">"check_scores.dat"</span>, ios::app);</div>
1460
<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>  ofile_score << c_check_point << <span class="stringliteral">"\t"</span> << c_score << std::endl;</div>
1461
<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>  ofile_score.close();</div>
1462
<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>  ofile_check_score.close();</div>
1463
<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span> <span class="preprocessor">#endif</span></div>
1464
<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span> <span class="preprocessor"></span></div>
1465
<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>  <span class="keywordflow">if</span> (l_score <= 0 || c_score - l_score - mid_val <= 0 || c_score - mid_val <= ampl_cutoff)</div>
1466
<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>  {</div>
1467
<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>  <span class="keywordflow">return</span> 0;</div>
1468
<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>  }</div>
1469
<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span> </div>
1470
<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>  <span class="keywordflow">return</span> c_score;</div>
1471
<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>  }</div>
1472
<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span> </div>
1473
<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
1474
<div class="line"><a name="l01630"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a9313169cff9182464b7a63c3e37eebb2"> 1630</a></span>  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#aa6e604058ed988f0f108f1d7d446cd56">IsotopeWaveletTransform<PeakType>::clusterSeeds_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& candidate,</div>
1475
<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>  <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& 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>  {</div>
1477
<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>  <span class="keyword">typename</span> std::multimap<DoubleReal, Box>::iterator iter;</div>
1478
<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>  <span class="keyword">typename</span> Box::iterator box_iter;</div>
1479
<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>  std::vector<BoxElement> final_box;</div>
1480
<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>  <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>  <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> </div>
1483
<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>  <span class="keyword">typename</span> std::pair<DoubleReal, DoubleReal> c_extend;</div>
1484
<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>  <span class="keywordflow">for</span> (iter = tmp_boxes_->at(c).begin(); iter != tmp_boxes_->at(c).end(); ++iter)</div>
1485
<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>  {</div>
1486
<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span> </div>
1487
<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>  <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#af8b1d83064f6ef81d7a617802bab249f">Box</a>& c_box = iter->second;</div>
1488
<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>  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>  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> </div>
1491
<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>  <span class="comment">//Now, let's get the RT boundaries for the box</span></div>
1492
<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>  <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>  {</div>
1494
<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>  <span class="keywordflow">if</span> (box_iter->second.score == 0) <span class="comment">//virtual helping point</span></div>
1495
<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>  {</div>
1496
<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>  <span class="keywordflow">if</span> (count != 0)</div>
1497
<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>  <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> </div>
1499
<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>  c_mz = box_iter->second.mz;</div>
1500
<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>  virtual_av_intens += box_iter->second.intens;</div>
1501
<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>  virtual_av_abs_intens += fabs(box_iter->second.intens);</div>
1502
<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>  virtual_av_mz += c_mz * fabs(box_iter->second.intens);</div>
1503
<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>  ++virtual_count;</div>
1504
<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>  }</div>
1505
<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>  <span class="keywordflow">else</span></div>
1506
<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>  {</div>
1507
<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>  c_mz = box_iter->second.mz;</div>
1508
<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>  av_score += box_iter->second.score;</div>
1509
<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>  av_intens += box_iter->second.intens;</div>
1510
<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>  av_abs_intens += fabs(box_iter->second.intens);</div>
1511
<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>  av_mz += c_mz * fabs(box_iter->second.intens);</div>
1512
<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>  ++count;</div>
1513
<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>  }</div>
1514
<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>  }</div>
1515
<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span> </div>
1516
<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>  <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>  {</div>
1518
<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>  av_intens = virtual_av_intens / virtual_count;</div>
1519
<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>  av_score = 0;</div>
1520
<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>  av_mz = virtual_av_mz / virtual_av_abs_intens;</div>
1521
<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>  }</div>
1522
<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>  <span class="keywordflow">else</span></div>
1523
<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>  {</div>
1524
<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>  av_intens /= count;</div>
1525
<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>  av_score /= count;</div>
1526
<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>  av_mz /= av_abs_intens;</div>
1527
<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>  }</div>
1528
<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span> </div>
1529
<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>  <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>  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>  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>  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>  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> </div>
1535
<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>  c_box_element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#afc4478a0397a76fef003746ff45fc201">RT</a> = c_box.begin()->second.RT;</div>
1536
<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>  final_box.push_back(c_box_element);</div>
1537
<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>  }</div>
1538
<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span> </div>
1539
<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>  <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>  <span class="keywordflow">if</span> (num_o_feature == 0)</div>
1541
<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>  {</div>
1542
<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>  tmp_boxes_->at(c).clear();</div>
1543
<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>  <span class="keywordflow">return</span>;</div>
1544
<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>  }</div>
1545
<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span> </div>
1546
<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>  <span class="comment">//Computing the derivatives</span></div>
1547
<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>  std::vector<DoubleReal> bwd_diffs(num_o_feature, 0);</div>
1548
<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span> </div>
1549
<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>  bwd_diffs[0] = 0;</div>
1550
<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>  <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaf9ecec2d692138fab9167164a457cbd4">Size</a> i = 1; i < num_o_feature; ++i)</div>
1551
<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>  {</div>
1552
<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>  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>  }</div>
1554
<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span> </div>
1555
<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
1556
<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span> <span class="preprocessor"></span> std::ofstream ofile_bwd(<span class="stringliteral">"bwd_cpu.dat"</span>);</div>
1557
<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>  <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaf9ecec2d692138fab9167164a457cbd4">Size</a> i = 0; i < num_o_feature; ++i)</div>
1558
<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>  {</div>
1559
<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>  ofile_bwd << final_box[i].mz << <span class="stringliteral">"\t"</span> << bwd_diffs[i] << std::endl;</div>
1560
<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>  }</div>
1561
<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>  ofile_bwd.close();</div>
1562
<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span> <span class="preprocessor">#endif</span></div>
1563
<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span> <span class="preprocessor"></span></div>
1564
<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span> </div>
1565
<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>  <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaf9ecec2d692138fab9167164a457cbd4">Size</a> i = 0; i < num_o_feature - 1; ++i)</div>
1566
<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>  {</div>
1567
<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>  <span class="keywordflow">while</span> (i < num_o_feature - 2)</div>
1568
<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>  {</div>
1569
<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>  <span class="keywordflow">if</span> (final_box[i].score > 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>  <span class="keywordflow">break</span>;</div>
1571
<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>  ++i;</div>
1572
<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>  }</div>
1573
<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span> </div>
1574
<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>  <span class="keywordflow">if</span> (bwd_diffs[i] > 0 && bwd_diffs[i + 1] < 0)</div>
1575
<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>  {</div>
1576
<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>  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>  <span class="keywordflow">continue</span>;</div>
1578
<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>  }</div>
1579
<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>  }</div>
1580
<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span> </div>
1581
<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>  tmp_boxes_->at(c).clear();</div>
1582
<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>  }</div>
1583
<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span> </div>
1584
<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
1585
<div class="line"><a name="l01741"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#ae8d2aaf51f3673a1cb64737282dbc805"> 1741</a></span>  <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a14e9251e18d91334c130cace0ce242b2">IsotopeWaveletTransform<PeakType>::getAvIntens_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& scan)</div>
1586
<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>  {</div>
1587
<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>  <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>  <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 0; i < scan.size(); ++i)</div>
1589
<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>  {</div>
1590
<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>  <span class="keywordflow">if</span> (scan[i].getIntensity() >= 0)</div>
1591
<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>  {</div>
1592
<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>  av_intens += scan[i].getIntensity();</div>
1593
<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>  }</div>
1594
<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>  }</div>
1595
<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>  <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>  }</div>
1597
<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span> </div>
1598
<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
1599
<div class="line"><a name="l01755"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#ae1cf00e64f27fea54399c0dbe5290151"> 1755</a></span>  <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a6ffadd9173c3cabd40cae7de8c119c69">IsotopeWaveletTransform<PeakType>::getSdIntens_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& 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>  {</div>
1601
<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>  <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>  <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 0; i < scan.size(); ++i)</div>
1603
<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>  {</div>
1604
<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>  <span class="keywordflow">if</span> (scan[i].getIntensity() >= 0)</div>
1605
<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>  {</div>
1606
<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>  intens = scan[i].getIntensity();</div>
1607
<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>  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>  }</div>
1609
<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>  }</div>
1610
<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>  <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>  }</div>
1612
<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span> </div>
1613
<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
1614
<div class="line"><a name="l01770"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a293f7531cb47810311806f4aca65628f"> 1770</a></span>  <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a293f7531cb47810311806f4aca65628f">IsotopeWaveletTransform<PeakType>::getAvMZSpacing_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& 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>  {</div>
1616
<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>  std::vector<DoubleReal> diffs(scan.size() - 1, 0);</div>
1617
<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>  <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 0; i < scan.size() - 1; ++i)</div>
1618
<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>  {</div>
1619
<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>  diffs[i] = scan[i + 1].getMZ() - scan[i].getMZ();</div>
1620
<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>  }</div>
1621
<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span> </div>
1622
<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>  sort(diffs.begin(), diffs.end());</div>
1623
<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>  <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>  <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 0; i < diffs.size() / 2; ++i)</div>
1625
<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>  {</div>
1626
<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>  av_MZ_spacing += diffs[i];</div>
1627
<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>  }</div>
1628
<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span> </div>
1629
<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>  <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>  }</div>
1631
<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span> </div>
1632
<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
1633
<div class="line"><a name="l01789"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a14e9251e18d91334c130cace0ce242b2"> 1789</a></span>  <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a14e9251e18d91334c130cace0ce242b2">IsotopeWaveletTransform<PeakType>::getAvIntens_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html">TransSpectrum</a>& scan)</div>
1634
<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>  {</div>
1635
<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>  <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>  <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 0; i < 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>  {</div>
1638
<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>  <span class="keywordflow">if</span> (scan.<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a420f9a11eb02b46c5bb50b13b857ca95">getTransIntensity</a>(i) >= 0)</div>
1639
<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>  {</div>
1640
<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>  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>  }</div>
1642
<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>  }</div>
1643
<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>  <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>  }</div>
1645
<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span> </div>
1646
<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
1647
<div class="line"><a name="l01803"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a6ffadd9173c3cabd40cae7de8c119c69"> 1803</a></span>  <a class="code" href="classdouble.html">DoubleReal</a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a6ffadd9173c3cabd40cae7de8c119c69">IsotopeWaveletTransform<PeakType>::getSdIntens_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html">TransSpectrum</a>& 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>  {</div>
1649
<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>  <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>  <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 0; i < 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>  {</div>
1652
<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>  <span class="keywordflow">if</span> (scan.<a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html#a420f9a11eb02b46c5bb50b13b857ca95">getTransIntensity</a>(i) >= 0)</div>
1653
<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>  {</div>
1654
<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>  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>  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>  }</div>
1657
<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>  }</div>
1658
<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>  <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>  }</div>
1660
<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span> </div>
1661
<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
1662
<div class="line"><a name="l01818"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#abe3442014d1b490291efebca5d69bf6d"> 1818</a></span>  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#abe3442014d1b490291efebca5d69bf6d">IsotopeWaveletTransform<PeakType>::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>  <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>  {</div>
1665
<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>  <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> </div>
1667
<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>  <span class="keyword">typename</span> std::multimap<DoubleReal, Box>::iterator upper_iter(open_boxes_.upper_bound(mz));</div>
1668
<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>  <span class="keyword">typename</span> std::multimap<DoubleReal, Box>::iterator lower_iter(open_boxes_.lower_bound(mz));</div>
1669
<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span> </div>
1670
<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>  <span class="keywordflow">if</span> (lower_iter != open_boxes_.end())</div>
1671
<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>  {</div>
1672
<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>  <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>  <span class="keywordflow">if</span> (mz != lower_iter->first && lower_iter != open_boxes_.begin())</div>
1674
<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>  {</div>
1675
<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>  --lower_iter;</div>
1676
<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>  }</div>
1677
<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>  }</div>
1678
<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span> </div>
1679
<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>  <span class="keyword">typename</span> std::multimap<DoubleReal, Box>::iterator insert_iter;</div>
1680
<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>  <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>  <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>  {</div>
1683
<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>  <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>  <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>  <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>  <span class="keywordflow">if</span> (!open_boxes_.empty())</div>
1687
<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>  {</div>
1688
<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>  <span class="keywordflow">if</span> (fabs((--lower_iter)->first - mz) < dist_constraint) <span class="comment">//matching box</span></div>
1689
<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>  {</div>
1690
<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>  create_new_box = <span class="keyword">false</span>;</div>
1691
<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>  insert_iter = lower_iter;</div>
1692
<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>  }</div>
1693
<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>  }</div>
1694
<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>  <span class="keywordflow">else</span></div>
1695
<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>  {</div>
1696
<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>  create_new_box = <span class="keyword">true</span>;</div>
1697
<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>  }</div>
1698
<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>  }</div>
1699
<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>  <span class="keywordflow">else</span></div>
1700
<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>  {</div>
1701
<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>  <span class="keywordflow">if</span> (upper_iter == open_boxes_.end() && fabs(lower_iter->first - mz) < dist_constraint) <span class="comment">//Found matching Box</span></div>
1702
<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>  {</div>
1703
<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>  insert_iter = lower_iter;</div>
1704
<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>  create_new_box = <span class="keyword">false</span>;</div>
1705
<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>  }</div>
1706
<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>  <span class="keywordflow">else</span></div>
1707
<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>  {</div>
1708
<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>  create_new_box = <span class="keyword">true</span>;</div>
1709
<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>  }</div>
1710
<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>  }</div>
1711
<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span> </div>
1712
<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span> </div>
1713
<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>  <span class="keywordflow">if</span> (upper_iter != open_boxes_.end() && lower_iter != open_boxes_.end())</div>
1714
<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>  {</div>
1715
<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>  <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> </div>
1717
<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>  <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>  <a class="code" href="classdouble.html">DoubleReal</a> dist_lower = fabs(lower_iter->first - mz);</div>
1719
<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>  <a class="code" href="classdouble.html">DoubleReal</a> dist_upper = fabs(upper_iter->first - mz);</div>
1720
<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>  dist_lower = (dist_lower < dist_constraint) ? dist_lower : INT_MAX;</div>
1721
<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>  dist_upper = (dist_upper < dist_constraint) ? dist_upper : INT_MAX;</div>
1722
<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span> </div>
1723
<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>  <span class="keywordflow">if</span> (dist_lower >= dist_constraint && dist_upper >= 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>  {</div>
1725
<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>  create_new_box = <span class="keyword">true</span>;</div>
1726
<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>  }</div>
1727
<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>  <span class="keywordflow">else</span></div>
1728
<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>  {</div>
1729
<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>  insert_iter = (dist_lower < dist_upper) ? lower_iter : upper_iter;</div>
1730
<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>  create_new_box = <span class="keyword">false</span>;</div>
1731
<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>  }</div>
1732
<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>  }</div>
1733
<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span> </div>
1734
<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>  <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>  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>  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> </div>
1738
<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span> </div>
1739
<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>  <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>  {</div>
1741
<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>  std::pair<UInt, BoxElement> help2(scan, element);</div>
1742
<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>  insert_iter->second.insert(help2);</div>
1743
<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span> </div>
1744
<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>  <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>  <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#af8b1d83064f6ef81d7a617802bab249f">Box</a> replacement(insert_iter->second);</div>
1746
<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span> </div>
1747
<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>  <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>  <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>  <a class="code" href="classdouble.html">DoubleReal</a> c_mz = insert_iter->first * (insert_iter->second.size() - 1) + mz;</div>
1750
<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>  c_mz /= ((<a class="code" href="group__Concept.html#gace75bfb1aba684e874dffee13738bd15">DoubleReal</a>) insert_iter->second.size());</div>
1751
<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span> </div>
1752
<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>  <span class="comment">//Now let's remove the old and insert the new one</span></div>
1753
<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>  open_boxes_.erase(insert_iter);</div>
1754
<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>  std::pair<DoubleReal, std::multimap<UInt, BoxElement> > help3(c_mz, replacement);</div>
1755
<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>  open_boxes_.insert(help3);</div>
1756
<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>  }</div>
1757
<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>  <span class="keywordflow">else</span></div>
1758
<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>  {</div>
1759
<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>  std::pair<UInt, BoxElement> help2(scan, element);</div>
1760
<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>  std::multimap<UInt, BoxElement> help3;</div>
1761
<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>  help3.insert(help2);</div>
1762
<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>  std::pair<DoubleReal, std::multimap<UInt, BoxElement> > help4(mz, help3);</div>
1763
<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>  open_boxes_.insert(help4);</div>
1764
<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>  }</div>
1765
<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>  }</div>
1766
<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span> </div>
1767
<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
1768
<div class="line"><a name="l01924"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a6780beba67ab81def140c83860050719"> 1924</a></span>  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a6780beba67ab81def140c83860050719">IsotopeWaveletTransform<PeakType>::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>  <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>  {</div>
1771
<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>  <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> </div>
1773
<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>  std::multimap<DoubleReal, Box>& tmp_box(tmp_boxes_->at(c));</div>
1774
<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>  <span class="keyword">typename</span> std::multimap<DoubleReal, Box>::iterator upper_iter(tmp_box.upper_bound(mz));</div>
1775
<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>  <span class="keyword">typename</span> std::multimap<DoubleReal, Box>::iterator lower_iter(tmp_box.lower_bound(mz));</div>
1776
<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span> </div>
1777
<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>  <span class="keywordflow">if</span> (lower_iter != tmp_box.end())</div>
1778
<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>  {</div>
1779
<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>  <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>  <span class="keywordflow">if</span> (mz != lower_iter->first && lower_iter != tmp_box.begin())</div>
1781
<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>  {</div>
1782
<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>  --lower_iter;</div>
1783
<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>  }</div>
1784
<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>  }</div>
1785
<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span> </div>
1786
<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>  <span class="keyword">typename</span> std::multimap<DoubleReal, Box>::iterator insert_iter;</div>
1787
<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>  <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>  <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>  {</div>
1790
<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>  <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>  <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>  <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>  <span class="keywordflow">if</span> (!tmp_box.empty())</div>
1794
<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>  {</div>
1795
<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>  <span class="keywordflow">if</span> (fabs((--lower_iter)->first - mz) < dist_constraint) <span class="comment">//matching box</span></div>
1796
<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>  {</div>
1797
<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>  create_new_box = <span class="keyword">false</span>;</div>
1798
<div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>  insert_iter = lower_iter;</div>
1799
<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>  }</div>
1800
<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>  }</div>
1801
<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>  <span class="keywordflow">else</span></div>
1802
<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>  {</div>
1803
<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>  create_new_box = <span class="keyword">true</span>;</div>
1804
<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>  }</div>
1805
<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>  }</div>
1806
<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>  <span class="keywordflow">else</span></div>
1807
<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>  {</div>
1808
<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>  <span class="keywordflow">if</span> (upper_iter == tmp_box.end() && fabs(lower_iter->first - mz) < dist_constraint) <span class="comment">//Found matching Box</span></div>
1809
<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>  {</div>
1810
<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>  insert_iter = lower_iter;</div>
1811
<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>  create_new_box = <span class="keyword">false</span>;</div>
1812
<div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>  }</div>
1813
<div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>  <span class="keywordflow">else</span></div>
1814
<div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>  {</div>
1815
<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>  create_new_box = <span class="keyword">true</span>;</div>
1816
<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>  }</div>
1817
<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>  }</div>
1818
<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span> </div>
1819
<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span> </div>
1820
<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>  <span class="keywordflow">if</span> (upper_iter != tmp_box.end() && lower_iter != tmp_box.end())</div>
1821
<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>  {</div>
1822
<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>  <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>  <a class="code" href="classdouble.html">DoubleReal</a> dist_lower = fabs(lower_iter->first - mz);</div>
1824
<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>  <a class="code" href="classdouble.html">DoubleReal</a> dist_upper = fabs(upper_iter->first - mz);</div>
1825
<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>  dist_lower = (dist_lower < dist_constraint) ? dist_lower : INT_MAX;</div>
1826
<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>  dist_upper = (dist_upper < dist_constraint) ? dist_upper : INT_MAX;</div>
1827
<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span> </div>
1828
<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>  <span class="keywordflow">if</span> (dist_lower >= dist_constraint && dist_upper >= 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>  {</div>
1830
<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>  create_new_box = <span class="keyword">true</span>;</div>
1831
<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>  }</div>
1832
<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>  <span class="keywordflow">else</span></div>
1833
<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>  {</div>
1834
<div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>  insert_iter = (dist_lower < dist_upper) ? lower_iter : upper_iter;</div>
1835
<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>  create_new_box = <span class="keyword">false</span>;</div>
1836
<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>  }</div>
1837
<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>  }</div>
1838
<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span> </div>
1839
<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>  <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>  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>  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> </div>
1843
<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>  <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>  {</div>
1845
<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>  std::pair<UInt, BoxElement> help2(scan, element);</div>
1846
<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>  insert_iter->second.insert(help2);</div>
1847
<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span> </div>
1848
<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>  <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>  <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#af8b1d83064f6ef81d7a617802bab249f">Box</a> replacement(insert_iter->second);</div>
1850
<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span> </div>
1851
<div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>  <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>  <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>  <a class="code" href="classdouble.html">DoubleReal</a> c_mz = insert_iter->first * (insert_iter->second.size() - 1) + mz;</div>
1854
<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>  c_mz /= ((<a class="code" href="group__Concept.html#gace75bfb1aba684e874dffee13738bd15">DoubleReal</a>) insert_iter->second.size());</div>
1855
<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span> </div>
1856
<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>  <span class="comment">//Now let's remove the old and insert the new one</span></div>
1857
<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>  tmp_box.erase(insert_iter);</div>
1858
<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>  std::pair<DoubleReal, std::multimap<UInt, BoxElement> > help3(c_mz, replacement);</div>
1859
<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>  tmp_box.insert(help3);</div>
1860
<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>  }</div>
1861
<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>  <span class="keywordflow">else</span></div>
1862
<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>  {</div>
1863
<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>  std::pair<UInt, BoxElement> help2(scan, element);</div>
1864
<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>  std::multimap<UInt, BoxElement> help3;</div>
1865
<div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>  help3.insert(help2);</div>
1866
<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span> </div>
1867
<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>  std::pair<DoubleReal, std::multimap<UInt, BoxElement> > help4(mz, help3);</div>
1868
<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>  tmp_box.insert(help4);</div>
1869
<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>  }</div>
1870
<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>  }</div>
1871
<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span> </div>
1872
<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
1873
<div class="line"><a name="l02029"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#ac0b48539bdee44dbe1368bcfd412f33f"> 2029</a></span>  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#ac0b48539bdee44dbe1368bcfd412f33f">IsotopeWaveletTransform<PeakType>::updateBoxStates</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSExperiment.html">MSExperiment<PeakType></a>& 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>  <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>  {</div>
1876
<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>  <span class="keyword">typename</span> std::multimap<DoubleReal, Box>::iterator iter, iter2;</div>
1877
<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span> </div>
1878
<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>  <span class="keywordflow">if</span> ((<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a>)scan_index == end_bound && 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>  {</div>
1880
<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>  <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>  {</div>
1882
<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
1883
<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span> <span class="preprocessor"></span> std::cout << <span class="stringliteral">"LOW THREAD insert in end_box "</span> << iter->first << std::endl;</div>
1884
<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>  <span class="keyword">typename</span> Box::iterator dings;</div>
1885
<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>  <span class="keywordflow">for</span> (dings = iter->second.begin(); dings != iter->second.end(); ++dings)</div>
1886
<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>  std::cout << map[dings->first].getRT() << <span class="stringliteral">"\t"</span> << dings->second.c + 1 << std::endl;</div>
1887
<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span> <span class="preprocessor">#endif</span></div>
1888
<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span> <span class="preprocessor"></span> end_boxes_.insert(*iter);</div>
1889
<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>  }</div>
1890
<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>  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>  <span class="keywordflow">return</span>;</div>
1892
<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>  }</div>
1893
<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span> </div>
1894
<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>  <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>  {</div>
1896
<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
1897
<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span> <span class="preprocessor"></span> <span class="keywordflow">if</span> (front_bound > 0)</div>
1898
<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>  {</div>
1899
<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>  std::cout << <span class="stringliteral">"HIGH THREAD open box. "</span> << iter->first << <span class="stringliteral">"\t current scan index "</span> << scan_index << <span class="stringliteral">"\t"</span> << ((iter->second.begin()))->first << <span class="stringliteral">"\t of last scan "</span> << map.<a class="code" href="classOpenMS_1_1MSExperiment.html#a9d78a687cf2a391198bb3cbc08bc06cb">size</a>() - 1 << <span class="stringliteral">"\t"</span> << front_bound << std::endl;</div>
1900
<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>  }</div>
1901
<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span> <span class="preprocessor">#endif</span></div>
1902
<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span> <span class="preprocessor"></span></div>
1903
<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>  <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>  <a class="code" href="classunsigned_01int.html">UInt</a> lastScan = (--(iter->second.end()))->first;</div>
1905
<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>  <span class="keywordflow">if</span> (scan_index - lastScan > 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>  {</div>
1907
<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>  <span class="keywordflow">if</span> (iter->second.begin()->first - front_bound <= RT_interleave + 1 && front_bound > 0)</div>
1908
<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>  {</div>
1909
<div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>  iter2 = iter;</div>
1910
<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>  ++iter2;</div>
1911
<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
1912
<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span> <span class="preprocessor"></span> std::cout << <span class="stringliteral">"HIGH THREAD insert in front_box "</span> << iter->first << std::endl;</div>
1913
<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span> <span class="preprocessor">#endif</span></div>
1914
<div class="line"><a name="l02070"></a><span class="lineno"> 2070</span> <span class="preprocessor"></span> front_boxes_.insert(*iter);</div>
1915
<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>  open_boxes_.erase(iter);</div>
1916
<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>  iter = iter2;</div>
1917
<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>  <span class="keywordflow">continue</span>;</div>
1918
<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>  }</div>
1919
<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span> </div>
1920
<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>  iter2 = iter;</div>
1921
<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>  ++iter2;</div>
1922
<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>  <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>  <span class="comment">//The 'obvious' 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>  <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>  <span class="keywordflow">if</span> (iter->second.size() >= RT_votes_cutoff)</div>
1926
<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>  {</div>
1927
<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>  <span class="comment">//extendBox_ (map, iter->second);</span></div>
1928
<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>  iter = iter2;</div>
1929
<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>  closed_boxes_.insert(*(--iter));</div>
1930
<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>  }</div>
1931
<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>  open_boxes_.erase(iter);</div>
1932
<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>  iter = iter2;</div>
1933
<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>  }</div>
1934
<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>  <span class="keywordflow">else</span></div>
1935
<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>  {</div>
1936
<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>  ++iter;</div>
1937
<div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>  }</div>
1938
<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>  }</div>
1939
<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>  }</div>
1940
<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span> </div>
1941
<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
1942
<div class="line"><a name="l02098"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a6eb1919d7fb83824c39dff16d3fca8f7"> 2098</a></span>  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a6eb1919d7fb83824c39dff16d3fca8f7">IsotopeWaveletTransform<PeakType>::extendBox_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSExperiment.html">MSExperiment<PeakType></a>& 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>  {</div>
1944
<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
1945
<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span> <span class="preprocessor"></span> std::cout << <span class="stringliteral">"**** CHECKING FOR BOX EXTENSIONS ****"</span> << std::endl;</div>
1946
<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span> <span class="preprocessor">#endif</span></div>
1947
<div class="line"><a name="l02103"></a><span class="lineno"> 2103</span> <span class="preprocessor"></span></div>
1948
<div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>  <span class="comment">//Determining the elution profile</span></div>
1949
<div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>  <span class="keyword">typename</span> Box::const_iterator iter;</div>
1950
<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>  std::vector<DoubleReal> elution_profile(box.size());</div>
1951
<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>  <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>  <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>  {</div>
1954
<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>  <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaf9ecec2d692138fab9167164a457cbd4">Size</a> i = iter->second.MZ_begin; i != iter->second.MZ_end; ++i)</div>
1955
<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>  {</div>
1956
<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>  elution_profile[index] += map[iter->second.RT_index][i].getIntensity();</div>
1957
<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>  }</div>
1958
<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>  elution_profile[index] /= iter->second.MZ_end - iter->second.MZ_begin + 1.;</div>
1959
<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>  }</div>
1960
<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span> </div>
1961
<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>  <a class="code" href="classdouble.html">DoubleReal</a> max = 0;</div>
1962
<div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>  <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>  <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaf9ecec2d692138fab9167164a457cbd4">Size</a> i = 0; i < elution_profile.size(); ++i)</div>
1964
<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>  {</div>
1965
<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>  <span class="keywordflow">if</span> (elution_profile[i] > max)</div>
1966
<div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>  {</div>
1967
<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>  max_index = i;</div>
1968
<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>  max = elution_profile[i];</div>
1969
<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>  }</div>
1970
<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>  }</div>
1971
<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span> </div>
1972
<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>  <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> </div>
1974
<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>  <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>  <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaf9ecec2d692138fab9167164a457cbd4">Size</a> i = 0; i < elution_profile.size(); ++i)</div>
1976
<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>  {</div>
1977
<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>  av_elution += elution_profile[i];</div>
1978
<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>  }</div>
1979
<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>  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> </div>
1981
<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>  <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>  <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#gaf9ecec2d692138fab9167164a457cbd4">Size</a> i = 0; i < elution_profile.size(); ++i)</div>
1983
<div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>  {</div>
1984
<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>  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>  }</div>
1986
<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>  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>  sd_elution = sqrt(sd_elution);</div>
1988
<div class="line"><a name="l02144"></a><span class="lineno"> 2144</span> </div>
1989
<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>  <span class="comment">//Determine average m/z monoisotopic pos</span></div>
1990
<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>  <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>  <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>  {</div>
1993
<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>  av_mz += iter->second.mz;</div>
1994
<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
1995
<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span> <span class="preprocessor"></span> std::cout << iter->second.RT << <span class="stringliteral">"\t"</span> << iter->second.mz << <span class="stringliteral">"\t"</span> << iter->second.c + 1 << std::endl;</div>
1996
<div class="line"><a name="l02152"></a><span class="lineno"> 2152</span> <span class="preprocessor">#endif</span></div>
1997
<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span> <span class="preprocessor"></span> }</div>
1998
<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>  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> </div>
2000
<div class="line"><a name="l02156"></a><span class="lineno"> 2156</span> </div>
2001
<div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>  <span class="comment">//Boundary check</span></div>
2002
<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>  <span class="keywordflow">if</span> ((<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a>)(box.begin()->second.RT_index) - 1 < 0)</div>
2003
<div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>  {</div>
2004
<div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>  <span class="keywordflow">return</span>;</div>
2005
<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>  }</div>
2006
<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span> </div>
2007
<div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>  <a class="code" href="classunsigned_01int.html">UInt</a> pre_index = box.begin()->second.RT_index - 1;</div>
2008
<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>  <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType>::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>  <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> </div>
2011
<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>  <a class="code" href="classdouble.html">DoubleReal</a> mz_start = map[pre_index + 1][box.begin()->second.MZ_begin].getMZ();</div>
2012
<div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>  <a class="code" href="classdouble.html">DoubleReal</a> mz_end = map[pre_index + 1][box.begin()->second.MZ_end].getMZ();</div>
2013
<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span> </div>
2014
<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>  <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType>::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>  <span class="keywordflow">for</span> (<span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType>::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>  {</div>
2017
<div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>  pre_elution += mz_iter->getIntensity();</div>
2018
<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>  }</div>
2019
<div class="line"><a name="l02175"></a><span class="lineno"> 2175</span> </div>
2020
<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span> </div>
2021
<div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>  <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>  <span class="keywordflow">if</span> (pre_elution <= av_elution - 2 * sd_elution)</div>
2023
<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>  {</div>
2024
<div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>  <span class="keywordflow">return</span>;</div>
2025
<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>  }</div>
2026
<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span> </div>
2027
<div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>  <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>  <a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> first_index = box.begin()->second.RT_index;</div>
2029
<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>  <span class="keywordflow">for</span> (<a class="code" href="group__Concept.html#ga7cc214a236ad3bb6ad435bdcf5262a3f">Int</a> i = 1; i < max_extension; ++i)</div>
2030
<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>  {</div>
2031
<div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>  c_index = first_index - i;</div>
2032
<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>  <span class="keywordflow">if</span> (c_index < 0)</div>
2033
<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>  {</div>
2034
<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>  <span class="keywordflow">break</span>;</div>
2035
<div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>  }</div>
2036
<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span> </div>
2037
<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>  <span class="comment">//CHECK Majority vote for charge???????????????</span></div>
2038
<div class="line"><a name="l02194"></a><span class="lineno"> 2194</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
2039
<div class="line"><a name="l02195"></a><span class="lineno"> 2195</span> <span class="preprocessor"></span> std::cout << box.begin()->second.RT << <span class="stringliteral">"\t"</span> << av_mz << <span class="stringliteral">"\t"</span> << box.begin()->second.c + 1 << <span class="stringliteral">"\t"</span> << <span class="stringliteral">" extending the box "</span> << std::endl;</div>
2040
<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span> <span class="preprocessor">#endif</span></div>
2041
<div class="line"><a name="l02197"></a><span class="lineno"> 2197</span> <span class="preprocessor"></span></div>
2042
<div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>  push2Box_(av_mz, c_index, box.begin()->second.c, box.begin()->second.score, c_iter->getIntensity(),</div>
2043
<div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>  map[c_index].getRT(), box.<a class="code" href="classOpenMS_1_1MSExperiment.html#a2387033802383edbdc95f9bbb12a707e">begin</a>()->second.MZ_begin, box.begin()->second.MZ_end);</div>
2044
<div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>  }</div>
2045
<div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>  }</div>
2046
<div class="line"><a name="l02202"></a><span class="lineno"> 2202</span> </div>
2047
<div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
2048
<div class="line"><a name="l02204"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#aa6e604058ed988f0f108f1d7d446cd56"> 2204</a></span>  <span class="keywordtype">void</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#aa6e604058ed988f0f108f1d7d446cd56">IsotopeWaveletTransform<PeakType>::clusterSeeds_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html">TransSpectrum</a>& candidates,</div>
2049
<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>  <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& 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>  {</div>
2051
<div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>  <span class="keyword">typename</span> std::multimap<DoubleReal, Box>::iterator iter;</div>
2052
<div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>  <span class="keyword">typename</span> Box::iterator box_iter;</div>
2053
<div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>  std::vector<BoxElement> final_box;</div>
2054
<div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>  <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>  <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> </div>
2057
<div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>  <span class="keyword">typename</span> std::pair<DoubleReal, DoubleReal> c_extend;</div>
2058
<div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>  <span class="keywordflow">for</span> (iter = tmp_boxes_->at(c).begin(); iter != tmp_boxes_->at(c).end(); ++iter)</div>
2059
<div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>  {</div>
2060
<div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>  <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#af8b1d83064f6ef81d7a617802bab249f">Box</a>& c_box = iter->second;</div>
2061
<div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>  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>  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> </div>
2064
<div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>  <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>  {</div>
2066
<div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>  <span class="keywordflow">if</span> (box_iter->second.score == 0) <span class="comment">//virtual helping point</span></div>
2067
<div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>  {</div>
2068
<div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>  <span class="keywordflow">if</span> (count != 0)</div>
2069
<div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>  <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> </div>
2071
<div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>  c_mz = box_iter->second.mz;</div>
2072
<div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>  virtual_av_intens += box_iter->second.intens;</div>
2073
<div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>  virtual_av_abs_intens += fabs(box_iter->second.intens);</div>
2074
<div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>  virtual_av_mz += c_mz * fabs(box_iter->second.intens);</div>
2075
<div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>  ++virtual_count;</div>
2076
<div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>  }</div>
2077
<div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>  <span class="keywordflow">else</span></div>
2078
<div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>  {</div>
2079
<div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>  c_mz = box_iter->second.mz;</div>
2080
<div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>  av_score += box_iter->second.score;</div>
2081
<div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>  av_intens += box_iter->second.intens;</div>
2082
<div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>  av_abs_intens += fabs(box_iter->second.intens);</div>
2083
<div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>  av_mz += c_mz * fabs(box_iter->second.intens);</div>
2084
<div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>  ++count;</div>
2085
<div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>  }</div>
2086
<div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>  }</div>
2087
<div class="line"><a name="l02243"></a><span class="lineno"> 2243</span> </div>
2088
<div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>  <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>  {</div>
2090
<div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>  av_intens = virtual_av_intens / virtual_count;</div>
2091
<div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>  av_score = 0;</div>
2092
<div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>  av_mz = virtual_av_mz / virtual_av_abs_intens;</div>
2093
<div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>  }</div>
2094
<div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>  <span class="keywordflow">else</span></div>
2095
<div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>  {</div>
2096
<div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>  av_intens /= count;</div>
2097
<div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>  av_score /= count;</div>
2098
<div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>  av_mz /= av_abs_intens;</div>
2099
<div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>  }</div>
2100
<div class="line"><a name="l02256"></a><span class="lineno"> 2256</span> </div>
2101
<div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>  <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>  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>  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>  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>  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> </div>
2107
<div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>  c_box_element.<a class="code" href="structOpenMS_1_1IsotopeWaveletTransform_1_1BoxElement.html#afc4478a0397a76fef003746ff45fc201">RT</a> = c_box.begin()->second.RT;</div>
2108
<div class="line"><a name="l02264"></a><span class="lineno"> 2264</span> </div>
2109
<div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>  final_box.push_back(c_box_element);</div>
2110
<div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>  }</div>
2111
<div class="line"><a name="l02267"></a><span class="lineno"> 2267</span> </div>
2112
<div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>  <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>  <span class="keywordflow">if</span> (num_o_feature == 0)</div>
2114
<div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>  {</div>
2115
<div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>  tmp_boxes_->at(c).clear();</div>
2116
<div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>  <span class="keywordflow">return</span>;</div>
2117
<div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>  }</div>
2118
<div class="line"><a name="l02274"></a><span class="lineno"> 2274</span> </div>
2119
<div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>  <span class="comment">//Computing the derivatives</span></div>
2120
<div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>  std::vector<DoubleReal> bwd_diffs(num_o_feature, 0);</div>
2121
<div class="line"><a name="l02277"></a><span class="lineno"> 2277</span> </div>
2122
<div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>  bwd_diffs[0] = 0;</div>
2123
<div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>  <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 1; i < num_o_feature; ++i)</div>
2124
<div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>  {</div>
2125
<div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>  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>  }</div>
2127
<div class="line"><a name="l02283"></a><span class="lineno"> 2283</span> </div>
2128
<div class="line"><a name="l02284"></a><span class="lineno"> 2284</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
2129
<div class="line"><a name="l02285"></a><span class="lineno"> 2285</span> <span class="preprocessor"></span> std::ofstream ofile_bwd(<span class="stringliteral">"bwd_gpu.dat"</span>);</div>
2130
<div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>  <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 0; i < num_o_feature; ++i)</div>
2131
<div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>  {</div>
2132
<div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>  ofile_bwd << final_box[i].mz << <span class="stringliteral">"\t"</span> << bwd_diffs[i] << std::endl;</div>
2133
<div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>  }</div>
2134
<div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>  ofile_bwd.close();</div>
2135
<div class="line"><a name="l02291"></a><span class="lineno"> 2291</span> <span class="preprocessor">#endif</span></div>
2136
<div class="line"><a name="l02292"></a><span class="lineno"> 2292</span> <span class="preprocessor"></span></div>
2137
<div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>  <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 0; i < num_o_feature - 1; ++i)</div>
2138
<div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>  {</div>
2139
<div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>  <span class="keywordflow">while</span> (i < num_o_feature - 2)</div>
2140
<div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>  {</div>
2141
<div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>  <span class="keywordflow">if</span> (final_box[i].score > 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>  <span class="keywordflow">break</span>;</div>
2143
<div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>  ++i;</div>
2144
<div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>  }</div>
2145
<div class="line"><a name="l02301"></a><span class="lineno"> 2301</span> </div>
2146
<div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>  <span class="keywordflow">if</span> (bwd_diffs[i] > 0 && bwd_diffs[i + 1] < 0)</div>
2147
<div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>  {</div>
2148
<div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>  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>  <span class="keywordflow">continue</span>;</div>
2150
<div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>  }</div>
2151
<div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>  }</div>
2152
<div class="line"><a name="l02308"></a><span class="lineno"> 2308</span> </div>
2153
<div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>  tmp_boxes_->at(c).clear();</div>
2154
<div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>  }</div>
2155
<div class="line"><a name="l02311"></a><span class="lineno"> 2311</span> </div>
2156
<div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
2157
<div class="line"><a name="l02313"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a12db861a7fd5db1a8aea9e6c4a403a89"> 2313</a></span>  <a class="code" href="classOpenMS_1_1FeatureMap.html">FeatureMap<Feature></a> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a12db861a7fd5db1a8aea9e6c4a403a89">IsotopeWaveletTransform<PeakType>::mapSeeds2Features</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSExperiment.html">MSExperiment<PeakType></a>& 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>  {</div>
2159
<div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>  <a class="code" href="classOpenMS_1_1FeatureMap.html">FeatureMap<Feature></a> feature_map;</div>
2160
<div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>  <span class="keyword">typename</span> std::multimap<DoubleReal, Box>::iterator iter;</div>
2161
<div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>  <span class="keyword">typename</span> Box::iterator box_iter;</div>
2162
<div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>  <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>  <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>  <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> </div>
2166
<div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>  <span class="keyword">typename</span> std::pair<DoubleReal, DoubleReal> c_extend;</div>
2167
<div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>  <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>  {</div>
2169
<div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>  sum_of_ref_intenses_g = 0;</div>
2170
<div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>  <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#af8b1d83064f6ef81d7a617802bab249f">Box</a>& c_box = iter->second;</div>
2171
<div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>  std::vector<DoubleReal> 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>  restart = <span class="keyword">false</span>;</div>
2173
<div class="line"><a name="l02329"></a><span class="lineno"> 2329</span> </div>
2174
<div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>  <span class="comment">//Let's first determine the charge</span></div>
2175
<div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>  <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>  <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>  {</div>
2178
<div class="line"><a name="l02334"></a><span class="lineno"> 2334</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
2179
<div class="line"><a name="l02335"></a><span class="lineno"> 2335</span> <span class="preprocessor"></span> <span class="keywordflow">if</span> (trunc(box_iter->second.mz) == 874)</div>
2180
<div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>  std::cout << box_iter->second.c << <span class="stringliteral">"\t"</span> << box_iter->second.intens << <span class="stringliteral">"\t"</span> << box_iter->second.score << std::endl;</div>
2181
<div class="line"><a name="l02337"></a><span class="lineno"> 2337</span> #endif</div>
2182
<div class="line"><a name="l02338"></a><span class="lineno"> 2338</span> </div>
2183
<div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>  if (box_iter->second.score == -1000)</div>
2184
<div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>  {</div>
2185
<div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>  restart = <span class="keyword">true</span>;</div>
2186
<div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>  <span class="keywordflow">break</span>;</div>
2187
<div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>  }</div>
2188
<div class="line"><a name="l02344"></a><span class="lineno"> 2344</span> </div>
2189
<div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>  charge_votes[box_iter->second.c] += box_iter->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>  ++charge_binary_votes[box_iter->second.c];</div>
2191
<div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>  }</div>
2192
<div class="line"><a name="l02348"></a><span class="lineno"> 2348</span> </div>
2193
<div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>  <span class="keywordflow">if</span> (restart)</div>
2194
<div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>  {</div>
2195
<div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>  <span class="keywordflow">continue</span>;</div>
2196
<div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>  }</div>
2197
<div class="line"><a name="l02353"></a><span class="lineno"> 2353</span> </div>
2198
<div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>  <span class="comment">//... determining the best fitting charge</span></div>
2199
<div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>  best_charge_index = 0; best_charge_score = 0;</div>
2200
<div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>  <span class="keywordflow">for</span> (<a class="code" href="classunsigned_01int.html">UInt</a> i = 0; i < max_charge_; ++i)</div>
2201
<div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>  {</div>
2202
<div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>  <span class="keywordflow">if</span> (charge_votes[i] > best_charge_score)</div>
2203
<div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>  {</div>
2204
<div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>  best_charge_index = i;</div>
2205
<div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>  best_charge_score = charge_votes[i];</div>
2206
<div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>  }</div>
2207
<div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>  }</div>
2208
<div class="line"><a name="l02364"></a><span class="lineno"> 2364</span> </div>
2209
<div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>  <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>  <span class="keywordflow">if</span> (charge_binary_votes[best_charge_index] < RT_votes_cutoff && RT_votes_cutoff <= 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>  {</div>
2212
<div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>  <span class="keywordflow">continue</span>;</div>
2213
<div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>  }</div>
2214
<div class="line"><a name="l02370"></a><span class="lineno"> 2370</span> </div>
2215
<div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>  c_charge = best_charge_index + 1; <span class="comment">//that's the finally predicted charge state for the pattern</span></div>
2216
<div class="line"><a name="l02372"></a><span class="lineno"> 2372</span> </div>
2217
<div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>  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>  <span class="comment">//Now, let's get the RT boundaries for the box</span></div>
2219
<div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>  std::vector<DPosition<2> > point_set;</div>
2220
<div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>  <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>  <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>  {</div>
2223
<div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>  sum_of_ref_intenses_l = 0;</div>
2224
<div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>  c_mz = box_iter->second.mz;</div>
2225
<div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>  c_RT = box_iter->second.RT;</div>
2226
<div class="line"><a name="l02382"></a><span class="lineno"> 2382</span> </div>
2227
<div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>  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> </div>
2229
<div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>  point_set.push_back(<a class="code" href="classOpenMS_1_1DPosition.html">DPosition<2></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>  <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>  point_set.push_back(<a class="code" href="classOpenMS_1_1DPosition.html">DPosition<2></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> </div>
2233
<div class="line"><a name="l02389"></a><span class="lineno"> 2389</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
2234
<div class="line"><a name="l02390"></a><span class="lineno"> 2390</span> <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Intenstype: "</span> << intenstype_ << std::endl;</div>
2235
<div class="line"><a name="l02391"></a><span class="lineno"> 2391</span> <span class="preprocessor">#endif</span></div>
2236
<div class="line"><a name="l02392"></a><span class="lineno"> 2392</span> <span class="preprocessor"></span> <span class="keywordflow">if</span> (intenstype_ == <span class="stringliteral">"ref"</span>)</div>
2237
<div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>  {</div>
2238
<div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>  <span class="comment">//Find monoisotopic max</span></div>
2239
<div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>  <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& c_spec(map[box_iter->second.RT_index]);</div>
2240
<div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>  <span class="comment">//'Correct' possible shift</span></div>
2241
<div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < mz_cutoff; ++i)</div>
2242
<div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>  {</div>
2243
<div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>  <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType>::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> </div>
2245
<div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>  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> </div>
2247
<div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>  <span class="keywordflow">while</span> (h_iter != c_spec.begin())</div>
2248
<div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>  {</div>
2249
<div class="line"><a name="l02405"></a><span class="lineno"> 2405</span> </div>
2250
<div class="line"><a name="l02406"></a><span class="lineno"> 2406</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
2251
<div class="line"><a name="l02407"></a><span class="lineno"> 2407</span> <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>  {</div>
2253
<div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>  std::cout << <span class="stringliteral">"cmz: "</span> << c_mz + i * <a class="code" href="namespaceOpenMS_1_1Constants.html#a4045630757d161b1f4dc0d2248202fd0">Constants::IW_NEUTRON_MASS</a> / c_charge << <span class="stringliteral">"\t"</span> << hc_iter->getMZ() << <span class="stringliteral">"\t"</span> << hc_iter->getIntensity() << <span class="stringliteral">"\t"</span> << h_iter->getMZ() << <span class="stringliteral">"\t"</span> << h_iter->getIntensity() << std::endl;</div>
2254
<div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>  }</div>
2255
<div class="line"><a name="l02411"></a><span class="lineno"> 2411</span> <span class="preprocessor">#endif</span></div>
2256
<div class="line"><a name="l02412"></a><span class="lineno"> 2412</span> <span class="preprocessor"></span></div>
2257
<div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>  --h_iter;</div>
2258
<div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>  <span class="keywordflow">if</span> (h_iter->getIntensity() > hc_iter->getIntensity() || (h_iter->getIntensity() == hc_iter->getIntensity() && hc_iter->getIntensity() == 0))</div>
2259
<div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>  {</div>
2260
<div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>  hc_iter = h_iter;</div>
2261
<div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>  }</div>
2262
<div class="line"><a name="l02418"></a><span class="lineno"> 2418</span> </div>
2263
<div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>  <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->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_charge)</div>
2264
<div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>  {</div>
2265
<div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>  <span class="keywordflow">break</span>;</div>
2266
<div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>  }</div>
2267
<div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>  }</div>
2268
<div class="line"><a name="l02424"></a><span class="lineno"> 2424</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
2269
<div class="line"><a name="l02425"></a><span class="lineno"> 2425</span> <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>  {</div>
2271
<div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>  std::cout << <span class="stringliteral">"c_mz: "</span> << c_mz + i * <a class="code" href="namespaceOpenMS_1_1Constants.html#a4045630757d161b1f4dc0d2248202fd0">Constants::IW_NEUTRON_MASS</a> / c_charge << <span class="stringliteral">"\t"</span> << hc_iter->getMZ() << <span class="stringliteral">"\t"</span> << hc_iter->getIntensity() << <span class="stringliteral">"\t"</span> << i * <a class="code" href="namespaceOpenMS_1_1Constants.html#a4045630757d161b1f4dc0d2248202fd0">Constants::IW_NEUTRON_MASS</a> / c_charge << <span class="stringliteral">"\t"</span>;</div>
2272
<div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>  }</div>
2273
<div class="line"><a name="l02429"></a><span class="lineno"> 2429</span> <span class="preprocessor">#endif</span></div>
2274
<div class="line"><a name="l02430"></a><span class="lineno"> 2430</span> <span class="preprocessor"></span> sum_of_ref_intenses_l += hc_iter->getIntensity();</div>
2275
<div class="line"><a name="l02431"></a><span class="lineno"> 2431</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
2276
<div class="line"><a name="l02432"></a><span class="lineno"> 2432</span> <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>  {</div>
2278
<div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>  std::cout << sum_of_ref_intenses_l << <span class="stringliteral">"********"</span> << std::endl;</div>
2279
<div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>  }</div>
2280
<div class="line"><a name="l02436"></a><span class="lineno"> 2436</span> <span class="preprocessor">#endif</span></div>
2281
<div class="line"><a name="l02437"></a><span class="lineno"> 2437</span> <span class="preprocessor"></span> }</div>
2282
<div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>  }</div>
2283
<div class="line"><a name="l02439"></a><span class="lineno"> 2439</span> </div>
2284
<div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>  <span class="keywordflow">if</span> (best_charge_index == box_iter->second.c)</div>
2285
<div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>  {</div>
2286
<div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>  av_score += box_iter->second.score;</div>
2287
<div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>  av_intens += box_iter->second.intens;</div>
2288
<div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>  av_ref_intens += box_iter->second.ref_intens;</div>
2289
<div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>  sum_of_ref_intenses_g += sum_of_ref_intenses_l;</div>
2290
<div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>  av_mz += c_mz * box_iter->second.intens;</div>
2291
<div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>  }</div>
2292
<div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>  av_RT += c_RT;</div>
2293
<div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>  }</div>
2294
<div class="line"><a name="l02450"></a><span class="lineno"> 2450</span> </div>
2295
<div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>  av_mz /= av_intens;</div>
2296
<div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>  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>  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>  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> </div>
2300
<div class="line"><a name="l02456"></a><span class="lineno"> 2456</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
2301
<div class="line"><a name="l02457"></a><span class="lineno"> 2457</span> <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>  std::cout << av_mz << <span class="stringliteral">"\t"</span> << best_charge_index << <span class="stringliteral">"\t"</span> << best_charge_score << std::endl;</div>
2303
<div class="line"><a name="l02459"></a><span class="lineno"> 2459</span> <span class="preprocessor">#endif</span></div>
2304
<div class="line"><a name="l02460"></a><span class="lineno"> 2460</span> <span class="preprocessor"></span></div>
2305
<div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>  <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>  <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>  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>  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>  c_feature.<a class="code" href="classOpenMS_1_1Feature.html#a8d65806c4f009695ab7bcf61eaf5546a">setConvexHulls</a>(std::vector<ConvexHull2D>(1, c_conv_hull));</div>
2310
<div class="line"><a name="l02466"></a><span class="lineno"> 2466</span> </div>
2311
<div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>  <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>  <span class="keywordflow">if</span> (intenstype_ == <span class="stringliteral">"corrected"</span>)</div>
2313
<div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>  {</div>
2314
<div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>  <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>  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>  }</div>
2317
<div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>  <span class="keywordflow">if</span> (intenstype_ == <span class="stringliteral">"ref"</span>)</div>
2318
<div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>  {</div>
2319
<div class="line"><a name="l02475"></a><span class="lineno"> 2475</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
2320
<div class="line"><a name="l02476"></a><span class="lineno"> 2476</span> <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>  {</div>
2322
<div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>  std::cout << sum_of_ref_intenses_g << <span class="stringliteral">"####"</span> << std::endl;</div>
2323
<div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>  }</div>
2324
<div class="line"><a name="l02480"></a><span class="lineno"> 2480</span> <span class="preprocessor">#endif</span></div>
2325
<div class="line"><a name="l02481"></a><span class="lineno"> 2481</span> <span class="preprocessor"></span></div>
2326
<div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>  av_intens = sum_of_ref_intenses_g;</div>
2327
<div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>  }</div>
2328
<div class="line"><a name="l02484"></a><span class="lineno"> 2484</span> </div>
2329
<div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>  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>  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>  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>  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>  feature_map.push_back(c_feature);</div>
2334
<div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>  }</div>
2335
<div class="line"><a name="l02491"></a><span class="lineno"> 2491</span> </div>
2336
<div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>  <span class="keywordflow">return</span> feature_map;</div>
2337
<div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>  }</div>
2338
<div class="line"><a name="l02494"></a><span class="lineno"> 2494</span> </div>
2339
<div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
2340
<div class="line"><a name="l02496"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a1e3cf387f84e90b6b499102c4d1f6a8e"> 2496</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a0cddf185d4cd401acef976e6798ab7c0">IsotopeWaveletTransform<PeakType>::checkPositionForPlausibility_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& candidate,</div>
2341
<div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>  <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& 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>  {</div>
2343
<div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>  <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType>::const_iterator</a> iter, ref_iter;</div>
2344
<div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>  <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>  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> </div>
2347
<div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>  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>  <span class="comment">//we can ignore those cases</span></div>
2349
<div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>  <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>  {</div>
2351
<div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2352
<div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>  }</div>
2353
<div class="line"><a name="l02509"></a><span class="lineno"> 2509</span> </div>
2354
<div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>  std::pair<DoubleReal, DoubleReal> reals;</div>
2355
<div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>  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>  <span class="comment">//Correct the position</span></div>
2357
<div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>  <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>  <span class="keywordflow">if</span> (check_PPMs)</div>
2359
<div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>  {</div>
2360
<div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>  reals = checkPPMTheoModel_(ref, iter->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>  real_mz = reals.first, real_intens = reals.second;</div>
2362
<div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>  <span class="comment">//if (real_mz <= 0 || real_intens <= 0)</span></div>
2363
<div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>  <span class="comment">//{</span></div>
2364
<div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>  <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType>::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>  <span class="keywordflow">while</span> (h_iter != ref.begin())</div>
2366
<div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>  {</div>
2367
<div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>  --h_iter;</div>
2368
<div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>  <span class="keywordflow">if</span> (h_iter->getIntensity() > hc_iter->getIntensity() || (h_iter->getIntensity() == hc_iter->getIntensity() && hc_iter->getIntensity() == 0))</div>
2369
<div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>  {</div>
2370
<div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>  hc_iter = h_iter;</div>
2371
<div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>  }</div>
2372
<div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>  <span class="keywordflow">else</span></div>
2373
<div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>  {</div>
2374
<div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>  <span class="keywordflow">break</span>;</div>
2375
<div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>  }</div>
2376
<div class="line"><a name="l02532"></a><span class="lineno"> 2532</span> </div>
2377
<div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>  <span class="keywordflow">if</span> (seed_mz - h_iter->getMZ() > <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>  {</div>
2379
<div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2380
<div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>  }</div>
2381
<div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>  }</div>
2382
<div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>  reals = checkPPMTheoModel_(ref, h_iter->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>  real_mz = reals.first, real_intens = reals.second;</div>
2384
<div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>  <span class="keywordflow">if</span> (real_mz <= 0 || real_intens <= 0)</div>
2385
<div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>  {</div>
2386
<div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2387
<div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>  }</div>
2388
<div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>  real_mz = h_iter->getMZ();</div>
2389
<div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>  real_intens = h_iter->getIntensity();</div>
2390
<div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>  <span class="comment">//}</span></div>
2391
<div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>  }</div>
2392
<div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>  <span class="keywordflow">else</span></div>
2393
<div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>  {</div>
2394
<div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>  reals = std::pair<DoubleReal, DoubleReal>(seed_mz, ref_iter->getIntensity());</div>
2395
<div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>  real_mz = reals.first, real_intens = reals.second;</div>
2396
<div class="line"><a name="l02552"></a><span class="lineno"> 2552</span> </div>
2397
<div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>  <span class="keywordflow">if</span> (real_mz <= 0 || real_intens <= 0)</div>
2398
<div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>  {</div>
2399
<div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>  <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType>::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>  <span class="keywordflow">while</span> (h_iter != ref.begin())</div>
2401
<div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>  {</div>
2402
<div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>  --h_iter;</div>
2403
<div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>  <span class="keywordflow">if</span> (h_iter->getIntensity() > hc_iter->getIntensity() || (h_iter->getIntensity() == hc_iter->getIntensity() && hc_iter->getIntensity() == 0))</div>
2404
<div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>  {</div>
2405
<div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>  hc_iter = h_iter;</div>
2406
<div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>  }</div>
2407
<div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>  <span class="keywordflow">else</span></div>
2408
<div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>  {</div>
2409
<div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>  <span class="keywordflow">break</span>;</div>
2410
<div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>  }</div>
2411
<div class="line"><a name="l02567"></a><span class="lineno"> 2567</span> </div>
2412
<div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>  <span class="keywordflow">if</span> (seed_mz - h_iter->getMZ() > <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>  {</div>
2414
<div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2415
<div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>  }</div>
2416
<div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>  }</div>
2417
<div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>  real_mz = h_iter->getMZ(), real_intens = h_iter->getIntensity();</div>
2418
<div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>  <span class="keywordflow">if</span> (real_mz <= 0 || real_intens <= 0)</div>
2419
<div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>  {</div>
2420
<div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2421
<div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>  }</div>
2422
<div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>  real_mz = h_iter->getMZ();</div>
2423
<div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>  real_intens = h_iter->getIntensity();</div>
2424
<div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>  }</div>
2425
<div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>  }</div>
2426
<div class="line"><a name="l02582"></a><span class="lineno"> 2582</span> </div>
2427
<div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>  <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> </div>
2429
<div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>  <span class="keywordflow">if</span> (c_score <= 0)</div>
2430
<div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>  {</div>
2431
<div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2432
<div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>  }</div>
2433
<div class="line"><a name="l02589"></a><span class="lineno"> 2589</span> </div>
2434
<div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>  <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>  <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType>::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>  <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType>::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>  <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>  {</div>
2439
<div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>  --real_r_MZ_iter;</div>
2440
<div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>  }</div>
2441
<div class="line"><a name="l02597"></a><span class="lineno"> 2597</span> </div>
2442
<div class="line"><a name="l02598"></a><span class="lineno"> 2598</span> </div>
2443
<div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>  <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>  <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> </div>
2446
<div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>  <span class="keywordflow">if</span> (prev_score == -1000)</div>
2447
<div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>  {</div>
2448
<div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>  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>  }</div>
2450
<div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>  <span class="keywordflow">else</span></div>
2451
<div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>  {</div>
2452
<div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>  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>  }</div>
2454
<div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2455
<div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>  }</div>
2456
<div class="line"><a name="l02612"></a><span class="lineno"> 2612</span> </div>
2457
<div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
2458
<div class="line"><a name="l02614"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a0cddf185d4cd401acef976e6798ab7c0"> 2614</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a0cddf185d4cd401acef976e6798ab7c0">IsotopeWaveletTransform<PeakType>::checkPositionForPlausibility_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform_1_1TransSpectrum.html">TransSpectrum</a>& candidate,</div>
2459
<div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>  <span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& 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>  {</div>
2461
<div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>  <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType>::const_iterator</a> iter, ref_iter;</div>
2462
<div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>  <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>  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> </div>
2465
<div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>  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>  <span class="comment">//we can ignore those cases</span></div>
2467
<div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>  <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>  {</div>
2469
<div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2470
<div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>  }</div>
2471
<div class="line"><a name="l02627"></a><span class="lineno"> 2627</span> </div>
2472
<div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>  std::pair<DoubleReal, DoubleReal> reals;</div>
2473
<div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>  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>  <span class="comment">//Correct the position</span></div>
2475
<div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>  <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>  <span class="keywordflow">if</span> (check_PPMs)</div>
2477
<div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>  {</div>
2478
<div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>  reals = checkPPMTheoModel_(ref, iter->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>  real_mz = reals.first, real_intens = reals.second;</div>
2480
<div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>  <span class="comment">//if (real_mz <= 0 || real_intens <= 0)</span></div>
2481
<div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>  <span class="comment">//{</span></div>
2482
<div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>  <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType>::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>  <span class="keywordflow">while</span> (h_iter != ref.begin())</div>
2484
<div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>  {</div>
2485
<div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>  --h_iter;</div>
2486
<div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>  <span class="keywordflow">if</span> (h_iter->getIntensity() > hc_iter->getIntensity() || (h_iter->getIntensity() == hc_iter->getIntensity() && hc_iter->getIntensity() == 0))</div>
2487
<div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>  {</div>
2488
<div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>  hc_iter = h_iter;</div>
2489
<div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>  }</div>
2490
<div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>  <span class="keywordflow">else</span></div>
2491
<div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>  {</div>
2492
<div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>  <span class="keywordflow">break</span>;</div>
2493
<div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>  }</div>
2494
<div class="line"><a name="l02650"></a><span class="lineno"> 2650</span> </div>
2495
<div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>  <span class="keywordflow">if</span> (seed_mz - h_iter->getMZ() > <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>  {</div>
2497
<div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2498
<div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>  }</div>
2499
<div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>  }</div>
2500
<div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>  ++h_iter;</div>
2501
<div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>  reals = checkPPMTheoModel_(ref, h_iter->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>  real_mz = reals.first, real_intens = reals.second;</div>
2503
<div class="line"><a name="l02659"></a><span class="lineno"> 2659</span> </div>
2504
<div class="line"><a name="l02660"></a><span class="lineno"> 2660</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
2505
<div class="line"><a name="l02661"></a><span class="lineno"> 2661</span> <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Plausibility check old_mz: "</span> << iter->getMZ() << <span class="stringliteral">"\t"</span> << real_mz << std::endl;</div>
2506
<div class="line"><a name="l02662"></a><span class="lineno"> 2662</span> <span class="preprocessor">#endif</span></div>
2507
<div class="line"><a name="l02663"></a><span class="lineno"> 2663</span> <span class="preprocessor"></span></div>
2508
<div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>  <span class="keywordflow">if</span> (real_mz <= 0 || real_intens <= 0)</div>
2509
<div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>  {</div>
2510
<div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2511
<div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>  }</div>
2512
<div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>  real_mz = h_iter->getMZ();</div>
2513
<div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>  real_intens = h_iter->getIntensity();</div>
2514
<div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>  <span class="comment">//}</span></div>
2515
<div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>  }</div>
2516
<div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>  <span class="keywordflow">else</span></div>
2517
<div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>  {</div>
2518
<div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>  reals = std::pair<DoubleReal, DoubleReal>(seed_mz, ref_iter->getIntensity());</div>
2519
<div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>  real_mz = reals.first, real_intens = reals.second;</div>
2520
<div class="line"><a name="l02676"></a><span class="lineno"> 2676</span> </div>
2521
<div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>  <span class="keywordflow">if</span> (real_mz <= 0 || real_intens <= 0)</div>
2522
<div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>  {</div>
2523
<div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>  <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType>::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>  <span class="keywordflow">while</span> (h_iter != ref.begin())</div>
2525
<div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>  {</div>
2526
<div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>  --h_iter;</div>
2527
<div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>  <span class="keywordflow">if</span> (h_iter->getIntensity() > hc_iter->getIntensity() || (h_iter->getIntensity() == hc_iter->getIntensity() && hc_iter->getIntensity() == 0))</div>
2528
<div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>  {</div>
2529
<div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>  hc_iter = h_iter;</div>
2530
<div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>  }</div>
2531
<div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>  <span class="keywordflow">else</span></div>
2532
<div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>  {</div>
2533
<div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>  <span class="keywordflow">break</span>;</div>
2534
<div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>  }</div>
2535
<div class="line"><a name="l02691"></a><span class="lineno"> 2691</span> </div>
2536
<div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>  <span class="keywordflow">if</span> (seed_mz - h_iter->getMZ() > <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>  {</div>
2538
<div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2539
<div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>  }</div>
2540
<div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>  }</div>
2541
<div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>  real_mz = h_iter->getMZ(), real_intens = h_iter->getIntensity();</div>
2542
<div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>  <span class="keywordflow">if</span> (real_mz <= 0 || real_intens <= 0)</div>
2543
<div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>  {</div>
2544
<div class="line"><a name="l02700"></a><span class="lineno"> 2700</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2545
<div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>  }</div>
2546
<div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>  real_mz = h_iter->getMZ();</div>
2547
<div class="line"><a name="l02703"></a><span class="lineno"> 2703</span>  real_intens = h_iter->getIntensity();</div>
2548
<div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>  }</div>
2549
<div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>  }</div>
2550
<div class="line"><a name="l02706"></a><span class="lineno"> 2706</span> </div>
2551
<div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>  <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> </div>
2553
<div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>  <span class="keywordflow">if</span> (c_score <= 0)</div>
2554
<div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>  {</div>
2555
<div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2556
<div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>  }</div>
2557
<div class="line"><a name="l02713"></a><span class="lineno"> 2713</span> </div>
2558
<div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>  <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>  <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType>::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>  <span class="keyword">typename</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType>::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>  <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>  {</div>
2563
<div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>  --real_r_MZ_iter;</div>
2564
<div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>  }</div>
2565
<div class="line"><a name="l02721"></a><span class="lineno"> 2721</span> </div>
2566
<div class="line"><a name="l02722"></a><span class="lineno"> 2722</span> </div>
2567
<div class="line"><a name="l02723"></a><span class="lineno"> 2723</span>  <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>  <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> </div>
2570
<div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>  <span class="keywordflow">if</span> (prev_score == -1000)</div>
2571
<div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>  {</div>
2572
<div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>  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>  }</div>
2574
<div class="line"><a name="l02730"></a><span class="lineno"> 2730</span>  <span class="keywordflow">else</span></div>
2575
<div class="line"><a name="l02731"></a><span class="lineno"> 2731</span>  {</div>
2576
<div class="line"><a name="l02732"></a><span class="lineno"> 2732</span>  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>  }</div>
2578
<div class="line"><a name="l02734"></a><span class="lineno"> 2734</span> </div>
2579
<div class="line"><a name="l02735"></a><span class="lineno"> 2735</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2580
<div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>  }</div>
2581
<div class="line"><a name="l02737"></a><span class="lineno"> 2737</span> </div>
2582
<div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> PeakType></div>
2583
<div class="line"><a name="l02739"></a><span class="lineno"><a class="line" href="classOpenMS_1_1IsotopeWaveletTransform.html#a750c0f353f03bb3361b276497b2c216b"> 2739</a></span>  std::pair<DoubleReal, DoubleReal> <a class="code" href="classOpenMS_1_1IsotopeWaveletTransform.html#a750c0f353f03bb3361b276497b2c216b">IsotopeWaveletTransform<PeakType>::checkPPMTheoModel_</a>(<span class="keyword">const</span> <a class="code" href="classOpenMS_1_1MSSpectrum.html">MSSpectrum<PeakType></a>& 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>  {</div>
2585
<div class="line"><a name="l02741"></a><span class="lineno"> 2741</span>  <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>  <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>  <span class="keywordflow">if</span> (ppms >= <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>  {</div>
2589
<div class="line"><a name="l02745"></a><span class="lineno"> 2745</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
2590
<div class="line"><a name="l02746"></a><span class="lineno"> 2746</span> <span class="preprocessor"></span> std::cout << ::std::setprecision(8) << std::fixed << c_mz << <span class="stringliteral">"\t =("</span> << <span class="stringliteral">"ISO_WAVE"</span> << <span class="stringliteral">")> "</span> << <span class="stringliteral">"REJECT \t"</span> << ppms << <span class="stringliteral">" (rule: "</span> << peptideMassRule_(mass) << <span class="stringliteral">" got: "</span> << mass << <span class="stringliteral">")"</span> << std::endl;</div>
2591
<div class="line"><a name="l02747"></a><span class="lineno"> 2747</span> <span class="preprocessor">#endif</span></div>
2592
<div class="line"><a name="l02748"></a><span class="lineno"> 2748</span> <span class="preprocessor"></span> <span class="keywordflow">return</span> std::pair<DoubleReal, DoubleReal>(-1, -1);</div>
2593
<div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>  }</div>
2594
<div class="line"><a name="l02750"></a><span class="lineno"> 2750</span> </div>
2595
<div class="line"><a name="l02751"></a><span class="lineno"> 2751</span> <span class="preprocessor">#ifdef OPENMS_DEBUG_ISOTOPE_WAVELET</span></div>
2596
<div class="line"><a name="l02752"></a><span class="lineno"> 2752</span> <span class="preprocessor"></span> std::cout << ::std::setprecision(8) << std::fixed << c_mz << <span class="stringliteral">"\t =("</span> << <span class="stringliteral">"ISO_WAVE"</span> << <span class="stringliteral">")> "</span> << <span class="stringliteral">"ACCEPT \t"</span> << ppms << <span class="stringliteral">" (rule: "</span> << peptideMassRule_(mass) << <span class="stringliteral">" got: "</span> << mass << <span class="stringliteral">")"</span> << std::endl;</div>
2597
<div class="line"><a name="l02753"></a><span class="lineno"> 2753</span> <span class="preprocessor">#endif</span></div>
2598
<div class="line"><a name="l02754"></a><span class="lineno"> 2754</span> <span class="preprocessor"></span> <span class="keywordflow">return</span> std::pair<DoubleReal, DoubleReal>(c_mz, ref.<a class="code" href="classOpenMS_1_1MSSpectrum.html#a808327302a2ba3fb630ea132d32db942">MZBegin</a>(c_mz)->getIntensity());</div>
2599
<div class="line"><a name="l02755"></a><span class="lineno"> 2755</span>  }</div>
2600
<div class="line"><a name="l02756"></a><span class="lineno"> 2756</span> </div>
2601
<div class="line"><a name="l02757"></a><span class="lineno"> 2757</span> } <span class="comment">//namespace</span></div>
2602
<div class="line"><a name="l02758"></a><span class="lineno"> 2758</span> </div>
2603
<div class="line"><a name="l02759"></a><span class="lineno"> 2759</span> <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< Feature > mapSeeds2Features(const MSExperiment< PeakType > &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< PeakType > &c_trans, const MSSpectrum< PeakType > &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< PeakType > * 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< PeakType > *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< PeakType > *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< DoubleReal > 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< PeakType >::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 &candidates, const MSSpectrum< PeakType > &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 &a, const cudaHelp &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< DoubleReal, Box > 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< PeakType > * 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 &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< DoubleReal > 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< DoubleReal > 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 &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< std::multimap< DoubleReal, Box > > * 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 &candidate, const MSSpectrum< PeakType > &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 &quot;off-by-1-Dalton predictions&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 &a, const PeakType &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< PeakType >::const_iterator &left_iter, const DoubleReal mz_pos, const typename MSSpectrum< PeakType >::const_iterator &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< PeakType > &c_trans, const MSSpectrum< PeakType > &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< PeakType > &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< DoubleReal > 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< PeakType ></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< 2 ></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 &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< PeakType > &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< PeakType > &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< PeakType > &candidates, const MSSpectrum< PeakType > &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< DoubleReal > 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 &a, const PeakType &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< PeakType > &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< PeakType > * 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< ConvexHull2D > &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< PeakType >::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< PeakType > &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< float > 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< PeakType >::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< DoubleReal > 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< PeakType > 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 &a, const PeakType &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< int > 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< PeakType >::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 &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 &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< DoubleReal, Box > 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< float > * 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< UInt, BoxElement > 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< PeakType > &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< DoubleReal, Box > 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< DoubleReal, DoubleReal > checkPPMTheoModel_(const MSSpectrum< PeakType > &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< float > 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< DoubleReal, Box > 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< DoubleReal, Box > 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< DoubleReal > 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">
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>