/// <summary> /// 与えられたパラメータによりシフトされたデータ列を返します. /// </summary> /// <param name="parameter">エネルギー軸の範囲の情報だけを用いています.</param> /// <param name="m"></param> /// <returns></returns> public async Task <IList <decimal> > GetDataAsync(ScanParameter parameter, int m, decimal shift = 0, decimal gain = 1) { if (m <= 0) { throw new ArgumentException("mには正の値を与えて下さい."); } var ws = await WideScan.GenerateAsync(this.DirectoryName); return(ws.Differentiate(m) .GetInterpolatedData(parameter.Start - shift, parameter.Step, parameter.PointsCount) .Select(d => d * ws.Parameter.NormalizationGain / parameter.NormalizationGain * gain).ToList()); }
/// <summary> /// シフトを考慮した固定参照データを読み込みます. /// </summary> /// <param name="references"></param> /// <param name="parameter"></param> /// <returns></returns> static async Task <List <List <decimal> > > LoadShiftedFixedStandardsData(ICollection <FixedSpectrum> references, ScanParameter parameter) { List <List <decimal> > standards = new List <List <decimal> >(); foreach (var item in references) { var ws = await WideScan.GenerateAsync(item.DirectoryName); standards.Add( ws.Differentiate(3) .GetInterpolatedData(parameter.Start - item.Shift, parameter.Step, parameter.PointsCount) .Select(d => d * ws.Parameter.NormalizationGain / parameter.NormalizationGain * item.Gain).ToList() ); } return(standards); }