84                                   const Trace &trace)
 const 
   98  using TraceIter            = std::vector<DataPoint>::const_iterator;
 
   99  TraceIter trace_iter_begin = trace.begin();
 
  100  TraceIter trace_iter       = trace_iter_begin;
 
  101  TraceIter trace_iter_end   = trace.end();
 
  110  using BinIter = std::vector<pappso_double>::const_iterator;
 
  112  BinIter bin_iter     = 
m_bins.begin();
 
  113  BinIter bin_end_iter = 
m_bins.end();
 
  136  auto bin_iter_for_mz = lower_bound(bin_iter, bin_end_iter, trace_iter->x);
 
  138  if(bin_iter_for_mz != bin_end_iter)
 
  143      if(bin_iter_for_mz != 
m_bins.begin())
 
  144        bin_iter = --bin_iter_for_mz;
 
  151  while(bin_iter != bin_end_iter)
 
  153      current_bin_mz_value = *bin_iter;
 
  169      bin_data_point.
x = current_bin_mz_value;
 
  176      while(trace_iter != trace_iter_end)
 
  178          bool trace_matched = 
false;
 
  197              trace_x = trace_iter->x;
 
  198              trace_y = trace_iter->y;
 
  204              if(trace_x <= current_bin_mz_value)
 
  219                  bin_data_point.
y -= trace_y;
 
  225                  trace_matched = 
true;
 
  256              trace_matched = 
true;
 
  287                  std::pair<std::map<pappso_double, pappso_double>::iterator,
 
  290                      map_trace.insert(std::pair<pappso_double, pappso_double>(
 
  291                        bin_data_point.
x, -bin_data_point.
y));
 
  311                      result.first->second += bin_data_point.
y;
 
  341      if(trace_iter == trace_iter_end)
 
  350              std::pair<std::map<pappso_double, pappso_double>::iterator, 
bool>
 
  352                  map_trace.insert(std::pair<pappso_double, pappso_double>(
 
  353                    bin_data_point.
x, -bin_data_point.
y));
 
  375                  result.first->second += bin_data_point.
y;