//ガンマの平均から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; }