public MassDistribution GetMassDistribution(Molecule molecule, int charge) { var md = new MassDistribution(MassResolution, .00001); var result = md; foreach (var element in molecule) { result = result.Add(md.Add(IsotopeAbundances[element.Key]).Multiply(element.Value)); } if (charge != 0) { result = result.OffsetAndDivide(charge * ProtonMass, charge); } return(result); }
/// <summary> /// Returns the result of adding this MassDistribution to itself the specified number of times. /// </summary> public MassDistribution Multiply(int factor) { if (factor == 0) { return(new MassDistribution(MassResolution, MinimumAbundance)); } if (factor == 1) { return(this); } MassDistribution result = Add(this); if (factor >= 4) { result = result.Multiply(factor / 2); } if (factor % 2 != 0) { result = result.Add(this); } return(result); }