Esempio n. 1
0
        public void AcquisitionFinished(Block b)
        {
            this.Block = b;
            mainWindow.AppendToTextArea("Demodulating block.");
            b.AddDetectorsToBlock();
            DBlock         = blockDemodulator.QuickDemodulateBlock(b);
            AnalysedDBlock = QuickEDMAnalysis.AnalyseDBlock(DBlock);
            liveViewer.AddAnalysedDBlock(AnalysedDBlock);

            //config.g
            haveBlock = true;
            appState  = AppState.stopped;
            mainWindow.AppendToTextArea("Acquisition finished");
            SetStatusReady();
        }
Esempio n. 2
0
        //public void Clear()
        //{
        //}

        public void AddAnalysedDBlock(QuickEDMAnalysis analysis)
        {
            edms.Add(analysis.RawEDMValAndErr[0]);

            //Append LiveViewer text with edm errors, B, DB & DB/SIG
            AppendStatusText(
                (analysis.Contrast).ToString("N3")
                + "\t" + (analysis.ShotNoise).ToString("N4")
                + "\t" + (analysis.RawEDMValAndErr[1] * Math.Pow(10, 26)).ToString("N4")
                + "\t" + (analysis.SIGValAndErrbp[0]).ToString("N1")
                + "\t" + (analysis.SIGValAndErrtp[0]).ToString("N1")
                + "\t" + (analysis.BValAndErr[0]).ToString("N4")
                + "\t" + (analysis.rf1AmpAndErr[0]).ToString("N4")
                + "\t" + (analysis.rf2AmpAndErr[0]).ToString("N4")
                + "\t" + (analysis.rf1FreqAndErr[0]).ToString("N4")
                + "\t" + (analysis.rf2FreqAndErr[0]).ToString("N4")
                + "\t" + (analysis.LF1DBDB[0]).ToString("N4")
                + "\t" + (analysis.LF1DBDB[1]).ToString("N4")
                + Environment.NewLine);

            // edm error
            double edmErrOverCluster = Statistics.BootstrappedTrimmedMeanAndError(edms.ToArray(), trimLevel, kNumReplicates)[1];
            double edmErrPerDay      = edmErrOverCluster * Math.Sqrt((double)edms.Count / (double)blocksPerDay);

            UpdateClusterStatusText(
                "Error per day: " + edmErrPerDay.ToString("E3")
                + Environment.NewLine + "Block count: " + blockCount);

            //Update Plots
            AppendToSigScatter(new double[] { blockCount }, new double[] { analysis.SIGValAndErr[0] });
            AppendToBScatter(new double[] { blockCount }, new double[] { analysis.BValAndErr[0] });
            AppendToDBScatter(new double[] { blockCount }, new double[] { analysis.DBValAndErr[0] });
            AppendToEDMScatter(new double[] { blockCount },
                               new double[] { Math.Pow(10, 26) * analysis.RawEDMValAndErr[1] });
            AppendSigmaToSIGScatter(new double[] { blockCount },
                                    new double[] { analysis.SIGValAndErr[0] + analysis.SIGValAndErr[1] },
                                    new double[] { analysis.SIGValAndErr[0] - analysis.SIGValAndErr[1] });
            AppendSigmaToBScatter(new double[] { blockCount },
                                  new double[] { analysis.BValAndErr[0] + analysis.BValAndErr[1] },
                                  new double[] { analysis.BValAndErr[0] - analysis.BValAndErr[1] });
            AppendSigmaToDBScatter(new double[] { blockCount },
                                   new double[] { analysis.DBValAndErr[0] + analysis.DBValAndErr[1] },
                                   new double[] { analysis.DBValAndErr[0] - analysis.DBValAndErr[1] });
            AppendToNorthLeakageScatter(new double[] { blockCount },
                                        new double[] { analysis.NorthCurrentValAndError[0] });
            AppendToSouthLeakageScatter(new double[] { blockCount },
                                        new double[] { analysis.SouthCurrentValAndError[0] });
            AppendToNorthLeakageErrorScatter(new double[] { blockCount },
                                             new double[] { analysis.NorthCurrentValAndError[1] });
            AppendToSouthLeakageErrorScatter(new double[] { blockCount },
                                             new double[] { analysis.SouthCurrentValAndError[1] });
            AppendToNorthECorrLeakageScatter(new double[] { blockCount },
                                             new double[] { analysis.NorthECorrCurrentValAndError[0] });
            AppendToSouthECorrLeakageScatter(new double[] { blockCount },
                                             new double[] { analysis.SouthECorrCurrentValAndError[0] });
            AppendToMagNoiseScatter(new double[] { blockCount },
                                    new double[] { analysis.MagValandErr[1] });
            AppendToRF1AScatter(new double[] { blockCount }, new double[] { analysis.rf1AmpAndErr[0] });
            AppendToRF2AScatter(new double[] { blockCount }, new double[] { analysis.rf2AmpAndErr[0] });
            AppendToRF1FScatter(new double[] { blockCount }, new double[] { analysis.rf1FreqAndErr[0] });
            AppendToRF2FScatter(new double[] { blockCount }, new double[] { analysis.rf2FreqAndErr[0] });
            AppendToRF1ADBDBScatter(new double[] { blockCount }, new double[] { analysis.RF1ADBDB[0] });
            AppendToRF2ADBDBScatter(new double[] { blockCount }, new double[] { analysis.RF2ADBDB[0] });
            AppendToRF1FDBDBScatter(new double[] { blockCount }, new double[] { analysis.RF1FDBDB[0] });
            AppendToRF2FDBDBScatter(new double[] { blockCount }, new double[] { analysis.RF2FDBDB[0] });
            AppendToLF1Scatter(new double[] { blockCount }, new double[] { analysis.LF1ValAndErr[0] });
            AppendToLF1DBDBScatter(new double[] { blockCount }, new double[] { analysis.LF1DBDB[0] });
            AppendToTopPDScatter(new double[] { blockCount }, new double[] { analysis.TopPDSIG[0] });
            AppendToBottomPDScatter(new double[] { blockCount }, new double[] { analysis.BottomPDSIG[0] });

            blockCount = blockCount + 1;
        }
Esempio n. 3
0
        //public void Clear()
        //{
        //}

        public void AddDBlock(DemodulatedBlock dblock)
        {
            QuickEDMAnalysis analysis = QuickEDMAnalysis.AnalyseDBlock(dblock);

            //Append LiveViewer text with edm errors, B, DB & DB/SIG
            AppendStatusText(
                (Math.Pow(10, 26) * analysis.RawEDMErr).ToString("G3")
                + "\t" + (Math.Pow(10, 26) * analysis.RawEDMErrNormed).ToString("G3")
                + "\t\t" + (analysis.BValAndErr[0]).ToString("N2")
                + "\t" + (analysis.DBValAndErr[0]).ToString("N2")
                + "\t" + (analysis.DBValAndErr[0] / analysis.SIGValAndErr[0]).ToString("N3")
                + Environment.NewLine);

            // Rollings values of edm error
            clusterVariance =
                ((clusterVariance * (blockCount - 1)) + analysis.RawEDMErr * analysis.RawEDMErr) / blockCount;
            double edmPerDay = Math.Sqrt(clusterVariance / blocksPerDay);

            clusterVarianceNormed =
                ((clusterVarianceNormed * (blockCount - 1))
                 + analysis.RawEDMErrNormed * analysis.RawEDMErrNormed) / blockCount;
            double edmPerDayNormed = Math.Sqrt(clusterVarianceNormed / blocksPerDay);

            UpdateClusterStatusText(
                "errorPerDay: " + edmPerDay.ToString("E3")
                + "\terrorPerDayNormed: " + edmPerDayNormed.ToString("E3")
                + Environment.NewLine + "block count: " + blockCount);

            //Update Plots
            AppendToSigScatter(new double[] { blockCount }, new double[] { analysis.SIGValAndErr[0] });
            AppendToSigNoiseScatter(new double[] { blockCount }, new double[] { analysis.SIGValAndErr[1] });
            AppendToBScatter(new double[] { blockCount }, new double[] { analysis.BValAndErr[0] });
            AppendToDBScatter(new double[] { blockCount }, new double[] { analysis.DBValAndErr[0] });
            AppendToEDMScatter(new double[] { blockCount },
                               new double[] { Math.Pow(10, 26) * analysis.RawEDMErr });
            AppendToEDMNormedScatter(new double[] { blockCount },
                                     new double[] { Math.Pow(10, 26) * analysis.RawEDMErrNormed });
            AppendSigmaToSIGScatter(new double[] { blockCount },
                                    new double[] { analysis.SIGValAndErr[0] + analysis.SIGValAndErr[1] },
                                    new double[] { analysis.SIGValAndErr[0] - analysis.SIGValAndErr[1] });
            AppendSigmaToBScatter(new double[] { blockCount },
                                  new double[] { analysis.BValAndErr[0] + analysis.BValAndErr[1] },
                                  new double[] { analysis.BValAndErr[0] - analysis.BValAndErr[1] });
            AppendSigmaToDBScatter(new double[] { blockCount },
                                   new double[] { analysis.DBValAndErr[0] + analysis.DBValAndErr[1] },
                                   new double[] { analysis.DBValAndErr[0] - analysis.DBValAndErr[1] });
            AppendToNorthLeakageScatter(new double[] { blockCount },
                                        new double[] { analysis.NorthCurrentValAndError[0] });
            AppendToSouthLeakageScatter(new double[] { blockCount },
                                        new double[] { analysis.SouthCurrentValAndError[0] });
            AppendToNorthLeakageErrorScatter(new double[] { blockCount },
                                             new double[] { analysis.NorthCurrentValAndError[1] });
            AppendToSouthLeakageErrorScatter(new double[] { blockCount },
                                             new double[] { analysis.SouthCurrentValAndError[1] });
            AppendToNorthECorrLeakageScatter(new double[] { blockCount },
                                             new double[] { analysis.NorthECorrCurrentValAndError[0] });
            AppendToSouthECorrLeakageScatter(new double[] { blockCount },
                                             new double[] { analysis.SouthECorrCurrentValAndError[0] });
            AppendToMagNoiseScatter(new double[] { blockCount },
                                    new double[] { analysis.MagValandErr[1] });
            AppendToRfCurrentScatter(new double[] { blockCount },
                                     new double[] { analysis.rfCurrent[0] });
            AppendToLF1Scatter(new double[] { blockCount }, new double[] { analysis.LFValandErr[0] });
            AppendToLF1NoiseScatter(new double[] { blockCount }, new double[] { analysis.LFValandErr[1] });
            AppendToRF1AScatter(new double[] { blockCount }, new double[] { analysis.rf1AmpAndErr[0] });
            AppendToRF2AScatter(new double[] { blockCount }, new double[] { analysis.rf2AmpAndErr[0] });
            AppendToRF1FScatter(new double[] { blockCount }, new double[] { analysis.rf1FreqAndErr[0] });
            AppendToRF2FScatter(new double[] { blockCount }, new double[] { analysis.rf2FreqAndErr[0] });

            if (blockCount == 1)
            {
                initProbePD = analysis.probePD[0];
                initPumpPD  = analysis.pumpPD[0];
            }
            AppendTopProbePDScatter(new double[] { blockCount }, new double[] { analysis.probePD[0] / initProbePD });
            AppendTopPumpPDScatter(new double[] { blockCount }, new double[] { analysis.pumpPD[0] / initPumpPD });

            AppendToLF1DBDBScatter(new double[] { blockCount }, new double[] { analysis.LF1DBDB[0] });
            AppendToLF2DBDBScatter(new double[] { blockCount }, new double[] { analysis.LF2DBDB[0] });
            AppendSigmaToLF1Scatter(new double[] { blockCount },
                                    new double[] { analysis.LF1DBDB[0] + analysis.LF1DBDB[1] },
                                    new double[] { analysis.LF1DBDB[0] - analysis.LF1DBDB[1] });
            AppendSigmaToLF2Scatter(new double[] { blockCount },
                                    new double[] { analysis.LF2DBDB[0] + analysis.LF2DBDB[1] },
                                    new double[] { analysis.LF2DBDB[0] - analysis.LF2DBDB[1] });

            blockCount = blockCount + 1;
        }