Inheritance: System.MarshalByRefObject
Beispiel #1
0
 public void AppendToZip(Scan scan, String name)
 {
     lock (this)
     {
         ZipEntry entry = new ZipEntry(name);
         runningZipStream.PutNextEntry(entry);
         xmls.Serialize(runningZipStream, scan);
     }
 }
Beispiel #2
0
 // 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;
     }
 }
Beispiel #3
0
 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)
         );
 }
Beispiel #4
0
 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);
 }
Beispiel #5
0
        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;
        }
Beispiel #6
0
 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));
 }
Beispiel #7
0
        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;
        }
Beispiel #8
0
 public void UpdateTotal()
 {
     totalScan += currentScan.GetSortedScan();
     scansInTotal++;
 }
Beispiel #9
0
 public void ClearCurrentScan()
 {
     currentScan = new Scan();
 }
Beispiel #10
0
 public void ClearAll()
 {
     currentScan = new Scan();
     totalScan = new Scan();
     scansInTotal = 0;
 }
Beispiel #11
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]);
        }
Beispiel #12
0
 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();
 }
Beispiel #13
0
 public void SerializeScanAsBinary(String filePath, Scan scan)
 {
     Stream scanStream = new FileStream(filePath, FileMode.Create);
     (new BinaryFormatter()).Serialize(scanStream, scan);
     scanStream.Close();
 }
Beispiel #14
0
 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;
 }
Beispiel #15
0
 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;
 }