Beispiel #1
0
        /// <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());
        }
Beispiel #2
0
        /// <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);
        }