/// <summary> /// Save in the database the method results and copies of the current method parameters. /// The table entries are related back to the measurement. /// The method results are preserved in the results_\<method table name\> and \<method table name\>_m DB tables. /// </summary> /// <param name="m">The measurement to preserve</param> /// <param name="moskey">The option selector+multiplicity key for the method results map</param> static void SaveMethodResultsForThisMeasurement(this Measurement m, MeasOptionSelector moskey) { // DB.Measurements ms = new DB.Measurements(); long mid = m.MeasurementId.UniqueId; INCCMethodResults imrs; bool gotten = m.INCCAnalysisResults.TryGetINCCResults(moskey.MultiplicityParams, out imrs); if (gotten && imrs.Count > 0) // expected to be true for verification and calibration { //The distinct detector id and material type index the methods and the method results Dictionary<AnalysisMethod, INCCMethodResult> amimr = imrs[m.INCCAnalysisState.Methods.selector]; // now get an enumerator over the map of method results Dictionary<AnalysisMethod, INCCMethodResult>.Enumerator ai = amimr.GetEnumerator(); while (ai.MoveNext()) { INCCMethodResult imr = ai.Current.Value; DB.ElementList els = imr.ToDBElementList(); // generates the Table property content too DB.ParamsRelatedBackToMeasurement ar = new DB.ParamsRelatedBackToMeasurement(imr.Table); long resid = ar.Create(mid, els); // save the method results in the relevant results table do { long mresid = ar.CreateMethod(resid, mid, imr.methodParams.ToDBElementList()); // save the initial method params (the copy rides on the results) m.Logger.TraceEvent(NCCReporter.LogLevels.Verbose, 34104, string.Format("Method results {0} preserved ({1}, {2})", imr.Table, resid, mresid)); } while (imr.methodParams.Pump > 0); } } }
/// <summary> /// Save specific analysis results for Background, Initial Source, Normalization and Precision measurements. /// </summary> /// <param name="m">The measurement to preserve</param> /// <param name="res">The subclassed specific results instance</param> static void SaveSpecificResultsForThisMeasurement(this Measurement m, INCCResult res) { long mid = m.MeasurementId.UniqueId; DB.ElementList els = res.ToDBElementList(); // generates the Table property content too DB.ParamsRelatedBackToMeasurement ar = new DB.ParamsRelatedBackToMeasurement(res.Table); long resid = ar.Create(mid, els); m.Logger.TraceEvent(NCCReporter.LogLevels.Verbose, 34103, String.Format("Results {0} preserved ({1})",resid, res.Table)); }
/// <summary> /// Save specific analysis results for Background, Initial Source, Normalization and Precision measurements. /// </summary> /// <param name="m">The measurement to preserve</param> /// <param name="res">The subclassed specific results instance</param> static void SaveSpecificResultsForThisMeasurement(this Measurement m, INCCResult res) { DB.Measurements ms = new DB.Measurements(); long mid = ms.Lookup(m.Detectors[0].Id.DetectorName, m.MeasDate, m.MeasOption.PrintName()); DB.ElementList els = res.ToDBElementList(); // generates the Table property content too DB.ParamsRelatedBackToMeasurement ar = new DB.ParamsRelatedBackToMeasurement(res.Table, ms.db); long resid = ar.Create(mid, els); m.Logger.TraceEvent(NCCReporter.LogLevels.Verbose, 34103, String.Format("Results {0} preserved ({1})",resid, res.Table)); }