virtual tribool accept(const Spectrum& spectrum) const { CVParam param = spectrum.cvParamChild(MS_spectrum_type); if (param.cvid == CVID_Unknown) return boost::logic::indeterminate; if (!cvIsA(param.cvid, MS_mass_spectrum)) return true; // MS level filter doesn't affect non-MS spectra param = spectrum.cvParam(MS_ms_level); if (param.cvid == CVID_Unknown) return boost::logic::indeterminate; return (param.valueAs<int>() == 2); }