/// <summary> /// Calculate the transition losses that apply to a transition with /// a specific type and cleavage offset for a single set of explicit losses. /// </summary> private static TransitionLosses CalcTransitionLosses(IonType type, int cleavageOffset, MassType massType, IEnumerable <ExplicitLoss> losses) { List <TransitionLoss> listLosses = null; foreach (var loss in losses) { if (!Transition.IsPrecursor(type)) { if (Transition.IsNTerminal(type) && loss.IndexAA > cleavageOffset) { continue; } if (Transition.IsCTerminal(type) && loss.IndexAA <= cleavageOffset) { continue; } } if (listLosses == null) { listLosses = new List <TransitionLoss>(); } listLosses.Add(loss.TransitionLoss); } if (listLosses == null) { return(null); } return(new TransitionLosses(listLosses, massType)); }