//ガンマの平均からBslを作る
 public void GetBslResult(List<double> rawBsl) {
     _raw_bsl = rawBsl;
     Bsl bsl = new Bsl();
     _bsl = bsl.Main(_avg_gamma, _settings._data._estimate);
 }
        ////result1
        //public List<double> GetGammaList() {
        //    return this._avgGammaList;
        //}

        ////result2
        //public List<SamplingResult> GetAvgSamplingList() {
        //    return this._avgSamplingList;
        //}

        ////result3
        //public List<List<SamplingResult>> GetSamplingResult() {
        //    return this._allSamplingResult;
        //}

		public void Main() {
			List<LaserDiodeSet> src = _machine.GetLaserDiodeSetList();
			List<List<double>> allGammaList = new List<List<double>>(); //gamma6 * 30
            List<double> allBslList = new List<double>();
            List<List<SamplingResult>> allSamplingResult = new List<List<SamplingResult>>();
            List<List<SamplingResult>> allSamplingResultRaw = new List<List<SamplingResult>>();
            

			//Sampling Count x300
			for (int i = 0; i < src.Count; i++) {
				SamplingData offset = new SamplingData();
				List<SamplingData> averagedSampData = new List<SamplingData>();

				//LD x9
				for (int j = 0; j < numOfLaser; j++) {
					double sigAvg = 0;
					double refAvg = 0;

					//1パルスにおける測定点 x30
					for (int k = 0; k < measurePointsPerPulse; k++) {
						SamplingData sd = src[i].GetLaserDiodeList()[j].GetSamplingDataList()[k];
						sigAvg += sd.GetSigData();
						refAvg += sd.GetRefData();
					}

					//1パルスにおける測定点30個のデータを平均
					//①LD0~LD8の SIG、REFそれぞれ30個の平均を求めます。

					//LD0はオフセットなので確保
					if (j == 0) {
						double sigOffset = (double)sigAvg / (double)measurePointsPerPulse;
						double refOffset = (double)refAvg / (double)measurePointsPerPulse;
						offset = new SamplingData(sigOffset, refOffset);
					} else {
						double sigBuff = (double)sigAvg / (double)measurePointsPerPulse;
						double refBuff = (double)refAvg / (double)measurePointsPerPulse;
						SamplingData sd = new SamplingData(sigBuff,refBuff);
						averagedSampData.Add(sd);
					}
				}
				
				//②上記で求めたSIG、REFの平均について、LD1~LD8からLD0を引きます。
				List<SamplingData> offsetRemovedSampData = GetDiffOffset(averagedSampData, offset);

				//③LD1~LD8について②で求めた値でSIG/REFで反射率を求めます。表示用とガンマ用でそれぞれスイッチするRの値
				//List<SamplingResult> srList = MakeSigRefDivData(offsetRemovedSampData,false);
                //List<SamplingResult> dbg_srList = MakeSigRefDivData(offsetRemovedSampData,false);

				//③LD1~LD8について②で求めた値でSIG/REFで反射率を求めます。表示用とガンマ用でそれぞれスイッチするRの値
                //lambdaとLDの対応表を使って変換
                List<SamplingResult> srList = ResortByCorrespTable(MakeSigRefDivData(offsetRemovedSampData, false));

                //ガンマを求める用のR
                //List<SamplingResult> srListForGamma = MakeSigRefDivData(offsetRemovedSampData, true);
                //List<SamplingResult> dbg_srListForGamma = MakeSigRefDivData(offsetRemovedSampData, true);
                
                //ガンマを求める用のR
                //lambdaとLDの対応表を使って変換
                List<SamplingResult> srListForGamma = ResortByCorrespTable(MakeSigRefDivData(offsetRemovedSampData, true));


                //素直にsig/refをする関数
                List<SamplingResult> rawList = ResortByCorrespTable(MakeSigRefDivData(offsetRemovedSampData));


				//④上記反射率からγを求めます(6個)
				GammaManager gm = new GammaManager(srListForGamma,_settings);
				List<double> gammaList = gm.Main();
				allGammaList.Add(gammaList);
				//⑤①~④を300回行います。

                //得たガンマからBSLデータを作ります
                Bsl est = new Bsl();
                double bslList = est.Main(gammaList, _settings._data._estimate);
                allBslList.Add(bslList);

				//及び、反射率の300回平均も取る
				allSamplingResult.Add(srList);
                
                //シンプルにsig/refだけの生データ用
                allSamplingResultRaw.Add(rawList);


                
				
			}
			//⑥⑤で求めた300個のデータの平均を求めます。
			_avgGammaList = GetGammaAverage(allGammaList);
			_avgSamplingList = GetSamplingAverage(allSamplingResult);
            _avgBslList = GetBslAverage(allBslList);
           
            //下村さんの要請により、15/10/06 に追加
            _allGammaList = new List<List<double>>();
            _allSamplingResult = new List<List<SamplingResult>>();

            //ガンマの平均前生データ
            _allGammaList = allGammaList;
            //校正係数とアッテネーターゲインをかけたRの平均前生データ
            _allSamplingResult = allSamplingResult;
            //普通のsig/refをRとした平均前の生データ
            _allSamplingResultRaw = allSamplingResultRaw;
            //BSLの平均前生データ
            _allBslList = allBslList;

		}