public static void ExtractSegmentScans(this RawDataCollection rawData, IRawDataPlus rawFile, MSOrderType MSOrder) { if (MSOrder == MSOrderType.Ms) { if (rawData.Performed.Contains(Operations.Ms1SegmentedScans)) { return; } } else { if (MSOrder == MSOrderType.Ms2) { if (rawData.Performed.Contains(Operations.Ms2SegmentedScans)) { return; } } else { if (rawData.Performed.Contains(Operations.Ms3SegmentedScans)) { return; } } } Log.Information("Extracting {MSOrder} segment scans", MSOrder); IEnumerable <int> scans = rawData.scanIndex.ScanEnumerators[MSOrder]; ProgressIndicator progress = new ProgressIndicator(scans.Count(), string.Format("Extracting {0} segment scans", MSOrder)); try { rawData.Extract(rawFile, scans, progress); } catch (Exception e) { Log.Error(e, "Failed while extracting {MSOrder} segment scans", MSOrder); throw e; } progress.Done(); if (MSOrder == MSOrderType.Ms) { rawData.Performed.Add(Operations.Ms1SegmentedScans); } else { if (MSOrder == MSOrderType.Ms2) { rawData.Performed.Add(Operations.Ms2SegmentedScans); } else { rawData.Performed.Add(Operations.Ms3SegmentedScans); } } }