private static void Process(GrowablePeak gpeak, BinaryWriter writer, ICollection <double> centerMasses, ICollection <float> centerMassErrs, ICollection <float> intensities, ICollection <float> minTimes, ICollection <float> maxTimes, ICollection <long> filePos, int minPeaks, IRawFile rawFile, double valleyFactor, bool split, IPeakCollector collector, bool maxIntensity) { Peak peak = gpeak.ToPeak(); if (peak.Count >= minPeaks) { peak.RemoveDoublePeaks(rawFile, maxIntensity); if (peak.Count >= minPeaks) { peak.Smooth(maxIntensity); if (collector != null) { collector.AddPeak(peak); } Peak[] peaks = peak.Decompose(valleyFactor, split, maxIntensity); foreach (Peak p in peaks) { if (p.Count >= minPeaks) { centerMasses.Add(p.CenterMass); centerMassErrs.Add(p.CenterMassError); intensities.Add(p.Intensity); minTimes.Add(p.GetMinTime(rawFile)); maxTimes.Add(p.GetMaxTime(rawFile)); filePos.Add(writer.BaseStream.Position); p.Write(writer); } p.Dispose(); } } } }