EnvelopeGenerator::EnvelopeGenerator( const Spectrum& p, const InstrumentProfile* instrument, size_t width) : p_(p.copy().sortByMass()), instrument_(instrument), width_(width), peak_index_(0), empty_space_(false), last_mz_(-std::numeric_limits<double>::min()) { assert(p.size() > 0 && p.masses[0] > 0); sigma_ = calculateSigmaAt(p_.masses[0], instrument_); }