/// <summary> /// Read Histogram from Log and find peak /// </summary> /// <param name="setting"></param> public void FillInitialPeakGuess(PeakFinderSetting setting) { Debug.Assert(setting.Channel == 0 || setting.Channel == 1); double[] y = setting.Channel == 0 ? Log.MCAData.Channel0Hist.ToDoubleArray() : Log.MCAData.Channel1Hist.ToDoubleArray(); PeakFinder pf = new PeakFinder(y, setting.TriggerLevel, setting.ScalingPower, setting.SmoothWindow); if (setting.Channel == 0) { Channel0PeakFinder = pf; } else if (setting.Channel == 1) { Channel1PeakFinder = pf; } //Debug.WriteLine("aaa: {0}", pf.Guesses.Length); }
/// <summary> /// Quick auto peakfinding/fit no step require just pick the first peak /// and fit it /// </summary> /// <param name="Channel"></param> public void AutoFit(PeakFinderSetting setting) { FillInitialPeakGuess(setting); PeakFinder pf = null; if (setting.Channel == 0) { pf = Channel0PeakFinder; } else if (setting.Channel == 1) { pf = Channel1PeakFinder; } if (pf.Guesses.Length == 0) { return; } //no peak found just return InitialPeakGuess guess = pf.Guesses[0]; if (setting.Channel == 0) { Log.Channel0InitialPeakGuess = guess; } else if (setting.Channel == 1) { Log.Channel1InitialPeakGuess = guess; } FitPeak(setting.Channel); }