/// <summary>
        /// The to tracks.
        /// </summary>
        /// <param name="edges">
        /// The edges.
        /// </param>
        /// <param name="parameters"></param>
        /// <returns>
        /// The <see cref="IEnumerable"/>.
        /// </returns>
        public static IEnumerable<IsomerTrack> ToTracks(IEnumerable<IEnumerable<IonTransition>> edges, CrossSectionSearchParameters parameters, int numberOfVoltageGroups, FitlineEnum fitlineType)
        {
            foreach (IEnumerable<IonTransition> rawTrack in edges)
            {
                FitLine newFitline = (fitlineType == FitlineEnum.OrdinaryLeastSquares) ? (FitLine)new LeastSquaresFitLine() : new IRLSFitline(10000);
                IsomerTrack track = ToTrack(rawTrack, parameters, numberOfVoltageGroups, newFitline);

                yield return track;
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="CrossSectionSearchParameters"/> class.
 /// </summary>
 /// <param name="driftTimeToleranceInMs">
 /// The drift Time Tolerance In Ms.
 /// </param>
 /// <param name="mzWindowHalfWidthInPpm">
 /// The mass tolerance in ppm.
 /// </param>
 /// <param name="numPointForSmoothing">
 /// The num point for smoothing.
 /// </param>
 /// <param name="featureFilterLevel">
 /// The feature filter level.
 /// </param>
 /// <param name="absoluteIntensityThreshold">
 /// The intensity threshold.
 /// </param>
 /// <param name="peakShapeThreshold">
 /// The peak shape threshold.
 /// </param>
 /// <param name="isotopicThreshold">
 /// The isotopic threshold.
 /// </param>
 /// <param name="maxOutliers">
 /// The min fit points.
 /// </param>
 /// <param name="peakDetectorSelection">
 /// The peak Detector Selection.
 /// </param>
 /// <param name="regressionSelection"></param>
 /// <param name="minR2">
 /// The min R 2.
 /// </param>
 /// <param name="relativeIntensityPercentageThreshold"></param>
 /// <param name="graphicsExtension"></param>
 /// <param name="insufficientFramesFraction"></param>
 /// <param name="driftTubeLengthInCm"></param>
 public CrossSectionSearchParameters(double driftTimeToleranceInMs, 
     double mzWindowHalfWidthInPpm, 
     int numPointForSmoothing, 
     double featureFilterLevel, 
     double absoluteIntensityThreshold, 
     double peakShapeThreshold, 
     double isotopicThreshold, 
     int maxOutliers, 
     PeakDetectorEnum peakDetectorSelection, 
     FitlineEnum regressionSelection,
     double minR2, 
     double relativeIntensityPercentageThreshold, 
     string graphicsExtension,
     double insufficientFramesFraction,
     double driftTubeLengthInCm,
     bool useAverageTemperature)
 {
     this.DriftTimeToleranceInMs = driftTimeToleranceInMs;
     this.NumPointForSmoothing = numPointForSmoothing;
     this.MzWindowHalfWidthInPpm = mzWindowHalfWidthInPpm;
     this.FeatureFilterLevel = featureFilterLevel;
     this.AbsoluteIntensityThreshold = absoluteIntensityThreshold;
     this.PeakShapeThreshold = peakShapeThreshold;
     this.IsotopicThreshold = isotopicThreshold;
     this.MaxOutliers = maxOutliers;
     this.PeakDetectorSelection = peakDetectorSelection;
     this.RegressionSelection = regressionSelection;
     this.MinR2 = minR2;
     this.RelativeIntensityPercentageThreshold = relativeIntensityPercentageThreshold;
     this.GraphicsExtension = graphicsExtension;
     this.InsufficientFramesFraction = insufficientFramesFraction;
     this.DriftTubeLengthInCm = driftTubeLengthInCm;
     this.UseAverageTemperature = useAverageTemperature;
 }