23 #include "../../types.h"
24 #include "../../utils.h"
25 #include "../../pappsoexception.h"
26 #include "../../exception/exceptionoutofrange.h"
27 #include "../../exception/exceptionnotpossible.h"
72 const Trace &trace)
const
84 using TraceIter = std::vector<DataPoint>::const_iterator;
85 TraceIter trace_iter_begin = trace.begin();
86 TraceIter trace_iter = trace_iter_begin;
87 TraceIter trace_iter_end = trace.end();
96 using BinIter = std::vector<pappso_double>::const_iterator;
98 BinIter bin_iter =
m_bins.begin();
99 BinIter bin_end_iter =
m_bins.end();
119 auto bin_iter_for_mz = lower_bound(bin_iter, bin_end_iter, trace_iter->x);
121 if(bin_iter_for_mz != bin_end_iter)
123 if(bin_iter_for_mz !=
m_bins.begin())
124 bin_iter = --bin_iter_for_mz;
129 while(bin_iter != bin_end_iter)
131 current_bin = *bin_iter;
146 new_data_point.
x = current_bin;
154 while(trace_iter != trace_iter_end)
157 bool trace_matched =
false;
172 trace_x = trace_iter->x;
173 trace_y = trace_iter->y;
185 if(trace_x <= current_bin)
189 new_data_point.
y += trace_y;
192 trace_matched =
true;
215 trace_matched =
true;
237 std::pair<std::map<pappso_double, pappso_double>::iterator,
240 map_trace.insert(std::pair<pappso_double, pappso_double>(
241 new_data_point.
x, new_data_point.
y));
248 result.first->second += new_data_point.
y;
273 if(trace_iter == trace_iter_end)
282 std::pair<std::map<pappso_double, pappso_double>::iterator,
bool>
284 map_trace.insert(std::pair<pappso_double, pappso_double>(
285 new_data_point.
x, new_data_point.
y));
289 result.first->second += new_data_point.
y;