16 #include "../../types.h"
17 #include "../../utils.h"
18 #include "../../pappsoexception.h"
19 #include "../../exception/exceptionoutofrange.h"
20 #include "../../exception/exceptionnotpossible.h"
66 const Trace &trace)
const
78 using TraceIter = std::vector<DataPoint>::const_iterator;
79 TraceIter trace_iter_begin = trace.begin();
80 TraceIter trace_iter = trace_iter_begin;
81 TraceIter trace_iter_end = trace.end();
90 using BinIter = std::vector<pappso_double>::const_iterator;
92 BinIter bin_iter =
m_bins.begin();
93 BinIter bin_end_iter =
m_bins.end();
113 auto bin_iter_for_mz = lower_bound(bin_iter, bin_end_iter, trace_iter->x);
115 if(bin_iter_for_mz != bin_end_iter)
117 if(bin_iter_for_mz !=
m_bins.begin())
118 bin_iter = --bin_iter_for_mz;
123 while(bin_iter != bin_end_iter)
125 current_bin = *bin_iter;
140 new_data_point.
x = current_bin;
148 while(trace_iter != trace_iter_end)
151 bool trace_matched =
false;
166 trace_x = trace_iter->x;
167 trace_y = trace_iter->y;
179 if(trace_x <= current_bin)
183 new_data_point.
y -= trace_y;
186 trace_matched =
true;
209 trace_matched =
true;
231 std::pair<std::map<pappso_double, pappso_double>::iterator,
234 map_trace.insert(std::pair<pappso_double, pappso_double>(
235 new_data_point.
x, -new_data_point.
y));
242 result.first->second -= new_data_point.
y;
267 if(trace_iter == trace_iter_end)
276 std::pair<std::map<pappso_double, pappso_double>::iterator,
bool>
278 map_trace.insert(std::pair<pappso_double, pappso_double>(
279 new_data_point.
x, -new_data_point.
y));
283 result.first->second -= new_data_point.
y;