public void AppendToZip(Scan scan, String name) { lock (this) { ZipEntry entry = new ZipEntry(name); runningZipStream.PutNextEntry(entry); xmls.Serialize(runningZipStream, scan); } }
// Note: this only really makes sense for sorted scans! public static Scan operator +(Scan s1, Scan s2) { if (s1.Points.Count == s2.Points.Count) { Scan temp = new Scan(); for (int i = 0 ; i < s1.Points.Count ; i++) temp.Points.Add((ScanPoint)s1.Points[i] + (ScanPoint)s2.Points[i]); temp.ScanSettings = s1.ScanSettings; return temp; } else { if (s1.Points.Count == 0) return s2; if (s2.Points.Count == 0) return s1; return null; } }
private void FitScan(Scan s, double gateStart, double gateEnd) { double scanStart = SpectrumGateLow; double scanEnd = SpectrumGateHigh; double[] xDat = s.ScanParameterArray; double[] yDat = s.GetTOFOnIntegralArray(0, gateStart, gateEnd); spectrumFitter.Fit( xDat, yDat, spectrumFitter.SuggestParameters(xDat, yDat, scanStart, scanEnd) ); }
private void FitAndPlotSpectrum(Scan scan) { FitScan(scan, startTOFGate, endTOFGate); // plot the fit window.ClearSpectrumFit(); window.PlotSpectrumFit(scan.ScanParameterArray, spectrumFitter.FittedValues); // update the parameter report window.SetLabel(window.spectrumFitResultsLabel, spectrumFitter.ParameterReport); }
private void AnalyseScanNoise(Scan s, double gateStart, double gateEnd, double spectrumGateStart, double spectrumGateEnd) { double detectorRatio = (double)Environs.Hardware.GetInfo("machineLengthRatio"); string channelList = (string)s.GetSetting("shot","channel"); string[] channels = channelList.Split(new char[] { ',' }); double[] probedat; double[] pumpdat; double[] normedDat; if (channels.Length == 2) { int[] detectors = { 0, 1 }; probedat = s.GetTOFOnOverShotNoiseArray(0, gateStart, gateEnd); pumpdat = s.GetTOFOnOverShotNoiseArray(1, gateStart / detectorRatio, gateEnd / detectorRatio); normedDat = s.GetTOFOnOverShotNoiseNormedArray(detectors, gateStart, gateEnd, gateStart / detectorRatio, gateEnd / detectorRatio); } else { probedat = s.GetTOFOnOverShotNoiseArray(0, gateStart, gateEnd); pumpdat = probedat; normedDat = probedat; } double tempP = 0; double tempN = 0; double tempTN = 0; double scanStart = s.ScanParameterArray[0]; double scanEnd = s.ScanParameterArray[s.ScanParameterArray.Length - 1]; int pointStart = (int)Math.Round((spectrumGateStart * (probedat.Length - 1)) / (scanEnd - scanStart)); int pointEnd = (int)Math.Round((spectrumGateEnd * (probedat.Length - 1)) / (scanEnd - scanStart)); int pointLength = pointEnd - pointStart; for (int i = pointStart; i < pointEnd; i++) { tempP += probedat[i]; tempN += pumpdat[i]; tempTN += normedDat[i]; } OverShotNoise0 = tempP/pointLength; OverShotNoise1 = tempN/pointLength; OverShotNoise01 = tempTN/pointLength; }
private void AnalyseNoise(Scan scan) { AnalyseScanNoise(scan, startTOFGate, endTOFGate, startSpectrumGate, endSpectrumGate); // update the noise report string[] info = {"top:", OverShotNoise0.ToString("G3"), "norm:",OverShotNoise1.ToString("G3"), "Normed:", OverShotNoise01.ToString("G3")}; window.SetLabel(window.noiseResultsLabel, String.Join(" ", info)); }
private double[] FitSpectrum(Scan s) { double[] xDat = s.ScanParameterArray; double scanStart = xDat[0]; double scanEnd = xDat[xDat.Length - 1]; TOF avTof = (TOF)s.GetGatedAverageOnShot(scanStart, scanEnd).TOFs[0]; double gateStart = avTof.GateStartTime; double gateEnd = avTof.GateStartTime + avTof.Length * avTof.ClockPeriod; double[] yDat = s.GetTOFOnIntegralArray(0, gateStart, gateEnd); fitter.Fit(xDat, yDat, fitter.SuggestParameters(xDat, yDat, scanStart, scanEnd)); string report = fitter.ParameterReport; string[] tokens = report.Split(' '); double[] fitresult = new double[4]; for (int i = 0; i < fitresult.Length; i++) fitresult[i] = Convert.ToDouble(tokens[2 * i + 1]); return fitresult; }
public void UpdateTotal() { totalScan += currentScan.GetSortedScan(); scansInTotal++; }
public void ClearCurrentScan() { currentScan = new Scan(); }
public void ClearAll() { currentScan = new Scan(); totalScan = new Scan(); scansInTotal = 0; }
// a method for saving the acquisitior settings into the scan private void WriteScanSettings(Scan scan) { PluginSettings st; ICollection keys; scan.ScanSettings.Add("out:pluginName", acquisitor.Configuration.outputPlugin.GetType().ToString()); scan.ScanSettings.Add("switch:pluginName", acquisitor.Configuration.switchPlugin.GetType().ToString()); scan.ScanSettings.Add("shot:pluginName", acquisitor.Configuration.shotGathererPlugin.GetType().ToString()); scan.ScanSettings.Add("pg:pluginName", acquisitor.Configuration.pgPlugin.GetType().ToString()); scan.ScanSettings.Add("yag:pluginName", acquisitor.Configuration.yagPlugin.GetType().ToString()); scan.ScanSettings.Add("analog:pluginName", acquisitor.Configuration.analogPlugin.GetType().ToString()); // settings from the output plugin st = acquisitor.Configuration.outputPlugin.Settings; keys = st.Keys; foreach (String key in keys) scan.ScanSettings.Add("out:" + key, st[key]); // settings from the switch plugin st = acquisitor.Configuration.switchPlugin.Settings; keys = st.Keys; foreach (String key in keys) scan.ScanSettings.Add("switch:" + key, st[key]); // settings from the shot gatherer plugin st = acquisitor.Configuration.shotGathererPlugin.Settings; keys = st.Keys; foreach (String key in keys) scan.ScanSettings.Add("shot:" + key, st[key]); // settings from the pattern plugin st = acquisitor.Configuration.pgPlugin.Settings; keys = st.Keys; foreach (String key in keys) scan.ScanSettings.Add("pg:" + key, st[key]); // settings from the yag plugin st = acquisitor.Configuration.yagPlugin.Settings; keys = st.Keys; foreach (String key in keys) scan.ScanSettings.Add("yag:" + key, st[key]); // settings from the analog plugin st = acquisitor.Configuration.analogPlugin.Settings; keys = st.Keys; foreach (String key in keys) scan.ScanSettings.Add("analog:" + key, st[key]); }
public void SerializeScanAsZippedXML(Stream stream, Scan scan, String name) { ZipOutputStream zippedStream = new ZipOutputStream(stream); zippedStream.SetLevel(5); ZipEntry entry = new ZipEntry(name); zippedStream.PutNextEntry(entry); xmls.Serialize(zippedStream, scan); zippedStream.Finish(); zippedStream.Close(); stream.Close(); }
public void SerializeScanAsBinary(String filePath, Scan scan) { Stream scanStream = new FileStream(filePath, FileMode.Create); (new BinaryFormatter()).Serialize(scanStream, scan); scanStream.Close(); }
public static Scan operator /(Scan s, int n) { Scan temp = new Scan(); foreach (ScanPoint sp in s.Points) temp.Points.Add(sp/n); temp.ScanSettings = s.ScanSettings; return temp; }
public Scan GetSortedScan() { double[] spa = ScanParameterArray; ScanPoint[] pts = (ScanPoint[])points.ToArray(typeof(ScanPoint)); Array.Sort(spa, pts); Scan ss = new Scan(); ss.points.AddRange(pts); ss.ScanSettings = ScanSettings; return ss; }