public override AnalogPatternBuilder GetAnalogPattern()
    {
        AnalogPatternBuilder p = new AnalogPatternBuilder((int)Parameters["PatternLength"]);

        MOTMasterScriptSnippet lm = new SHLoadMOT(p, Parameters);

        p.AddChannel("aom0frequency");
        p.AddChannel("aom1frequency");
        p.AddChannel("aom2frequency");
        p.AddChannel("aom3frequency");
        p.AddChannel("aom0amplitude");
        p.AddChannel("aom1amplitude");
        p.AddChannel("proberepumpshutter");

        p.AddAnalogValue("coil0current", 0, 0);
        p.AddAnalogValue("coil1current", 0, 0);
        p.AddAnalogValue("aom0frequency", 0, (double)Parameters["aom0Detuning"]);
        p.AddAnalogValue("aom1frequency", 0, (double)Parameters["aom1Detuning"]);
        p.AddAnalogValue("aom2frequency", 0, (double)Parameters["aom2Detuning"]);
        p.AddAnalogValue("aom3frequency", 0, (double)Parameters["aom3Detuning"]);
        p.AddAnalogValue("aom0amplitude", 0, 6.0);
        p.AddAnalogValue("aom1amplitude", 0, 6.0);
        p.AddAnalogValue("proberepumpshutter", 0, 5.0);
        p.AddAnalogValue("aom3frequency", (int)Parameters["Frame0Trigger"] - 10, (double)Parameters["absImageDetuning"]);
        p.AddAnalogPulse("aom1frequency", (int)Parameters["Frame0Trigger"] - 1, (int)Parameters["ExposureTime"] + 2, (double)Parameters["absImageRepumpDetuning"], (double)Parameters["aom1Detuning"]);
        p.AddAnalogPulse("aom1frequency", (int)Parameters["Frame1Trigger"] - 1, (int)Parameters["ExposureTime"] + 2, (double)Parameters["absImageRepumpDetuning"], (double)Parameters["aom1Detuning"]);
        p.AddAnalogPulse("aom1frequency", (int)Parameters["Frame2Trigger"] - 1, (int)Parameters["ExposureTime"] + 2, (double)Parameters["absImageRepumpDetuning"], (double)Parameters["aom1Detuning"]);
        p.AddAnalogValue("coil0current", 135000, 0);
        p.AddAnalogValue("coil1current", 135000, 0);

        p.SwitchAllOffAtEndOfPattern();
        return(p);
    }
    public override AnalogPatternBuilder GetAnalogPattern()
    {
        AnalogPatternBuilder p = new AnalogPatternBuilder((int)Parameters["PatternLength"]);

        MOTMasterScriptSnippet lm = new SHLoadMOT(p, Parameters);

        p.AddChannel("aom0frequency");
        p.AddChannel("aom1frequency");
        p.AddChannel("aom2frequency");
        p.AddChannel("aom3frequency");

        p.AddAnalogValue("coil0current", 0, 0);
        p.AddAnalogValue("coil1current", 0, 0);
        p.AddAnalogValue("aom0frequency", 0, (double)Parameters["aom0Detuning"]);
        p.AddAnalogValue("aom1frequency", 0, (double)Parameters["aom1Detuning"]);
        p.AddAnalogValue("aom2frequency", 0, (double)Parameters["aom2Detuning"]);
        p.AddAnalogValue("aom3frequency", 0, (double)Parameters["aom3Detuning"]);
        p.AddAnalogValue("aom3frequency", (int)Parameters["Frame0Trigger"] - 10, (double)Parameters["absImageDetuning"]);
        p.AddAnalogPulse("coil0current", (int)Parameters["MOTLoadDuration"], (int)Parameters["ReleaseTime"], 0, (double)Parameters["BottomMOTCoilCurrent"]);
        p.AddAnalogPulse("coil1current", (int)Parameters["MOTLoadDuration"], (int)Parameters["ReleaseTime"], 0, (double)Parameters["TopMOTCoilCurrent"]);
        p.AddAnalogValue("coil0current", 110000, 0);
        p.AddAnalogValue("coil1current", 110000, 0);

        p.SwitchAllOffAtEndOfPattern();
        return(p);
    }
Example #3
0
    public override AnalogPatternBuilder GetAnalogPattern()
    {
        AnalogPatternBuilder p = new AnalogPatternBuilder((int)Parameters["PatternLength"]);

        MOTMasterScriptSnippet lm          = new LoadMoleculeMOT(p, Parameters);
        int patternStartBeforeQ            = (int)Parameters["TCLBlockStart"];
        int blueMOTSwitchTime              = (int)Parameters["BlueMOTSwitchTime"];
        int currentDirectionSwitchTime     = blueMOTSwitchTime + (int)Parameters["BlueMOTSwitchDelay"];
        int motCoilsSwitchOffTime          = (int)Parameters["MOTCoilsSwitchOff"];
        int currentDirectionSwitchBackTime = motCoilsSwitchOffTime + (int)Parameters["BlueMOTSwitchDelay"];

        // Add Analog Channels

        p.AddChannel("v00Intensity");
        p.AddChannel("v00Frequency");
        p.AddChannel("xShimCoilCurrent");
        p.AddChannel("yShimCoilCurrent");
        p.AddChannel("zShimCoilCurrent");
        p.AddChannel("v00EOMAmp");

        // Slowing field
        p.AddAnalogValue("slowingCoilsCurrent", 0, (double)Parameters["slowingCoilsValue"]);
        p.AddAnalogValue("slowingCoilsCurrent", (int)Parameters["slowingCoilsOffTime"], 0.0);

        // B Field
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTCoilsSwitchOn"], (double)Parameters["MOTCoilsCurrentValue"]);
        p.AddAnalogPulse("MOTCoilsCurrent", currentDirectionSwitchTime, (int)Parameters["BlueMOTSwitchDuration"], 0.0, (double)Parameters["MOTCoilsBlueMOTCurrentValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", motCoilsSwitchOffTime, 0.0);

        // Shim Fields
        p.AddAnalogValue("xShimCoilCurrent", 0, (double)Parameters["xShimLoadCurrent"]);
        p.AddAnalogValue("yShimCoilCurrent", 0, (double)Parameters["yShimLoadCurrent"]);
        p.AddAnalogValue("zShimCoilCurrent", 0, (double)Parameters["zShimLoadCurrent"]);

        // trigger delay
        // p.AddAnalogValue("triggerDelay", 0, (double)Parameters["triggerDelay"]);

        // F=0
        p.AddAnalogValue("v00EOMAmp", 0, 5.7);

        // v0 Intensity Ramp
        p.AddAnalogValue("v00Intensity", 0, (double)Parameters["v0IntensityRampStartValue"]);
        p.AddLinearRamp("v00Intensity", (int)Parameters["v0IntensityRampStartTime"], (int)Parameters["v0IntensityRampDuration"], (double)Parameters["v0IntensityRampEndValue"]);
        p.AddAnalogValue("v00Intensity", blueMOTSwitchTime, (double)Parameters["v0IntensityRampStartValue"]);

        // v0 Frequency Ramp
        p.AddAnalogValue(
            "v00Frequency",
            0,
            ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyMOTValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]
            );
        p.AddAnalogValue(
            "v00Frequency",
            blueMOTSwitchTime,
            ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyBlueMOTValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]
            );


        return(p);
    }
Example #4
0
    public override AnalogPatternBuilder GetAnalogPattern()
    {
        AnalogPatternBuilder p = new AnalogPatternBuilder((int)Parameters["PatternLength"]);

        MOTMasterScriptSnippet lm = new SHLoadMOT(p, Parameters);

        p.AddAnalogPulse("coil0current", (int)Parameters["MOTLoadDuration"], (int)Parameters["ReleaseTime"], 0, (double)Parameters["MOTCoilsCurrent"]);
        p.AddAnalogValue("coil0current", 115000, 0);

        p.SwitchAllOffAtEndOfPattern();
        return(p);
    }
Example #5
0
    public override AnalogPatternBuilder GetAnalogPattern()
    {
        AnalogPatternBuilder p = new AnalogPatternBuilder((int)Parameters["PatternLength"]);

        MOTMasterScriptSnippet lm = new SHLoadMOT(p, Parameters);

        p.AddChannel("aom0frequency");
        p.AddChannel("aom1frequency");
        p.AddChannel("aom2frequency");
        p.AddChannel("aom3frequency");
        p.AddChannel("aom0amplitude");
        p.AddChannel("aom1amplitude");
        p.AddChannel("aom3amplitude");

        p.AddChannel("offsetlockfrequency");



        p.AddAnalogValue("coil0current", 0, 0);
        p.AddAnalogValue("coil1current", 0, 0);
        p.AddAnalogValue("aom0frequency", 0, (double)Parameters["aom0Detuning"]);
        p.AddAnalogValue("aom1frequency", 0, (double)Parameters["aom1Detuning"]);
        p.AddAnalogValue("aom2frequency", 0, (double)Parameters["aom2Detuning"]);
        p.AddAnalogValue("aom3frequency", 0, (double)Parameters["aom3Detuning"]);
        p.AddAnalogValue("aom0amplitude", 0, 6.0);
        p.AddAnalogValue("aom1amplitude", 0, 6.0);
        p.AddAnalogValue("aom3amplitude", 0, 6.0);
        p.AddAnalogValue("offsetlockfrequency", 0, (double)Parameters["offsetlockfrequency"]);

        p.AddAnalogValue("aom3frequency", (int)Parameters["Frame0Trigger"] - 10, (double)Parameters["absImageDetuning"]);
        p.AddAnalogValue("aom3amplitude", (int)Parameters["Frame0Trigger"] - 10, (double)Parameters["absImagePower"]);
        p.AddAnalogPulse("aom1frequency", (int)Parameters["Frame0Trigger"] - 1, (int)Parameters["ExposureTime"] + 2, (double)Parameters["absImageRepumpDetuning"], (double)Parameters["aom1Detuning"]);
        p.AddAnalogPulse("aom1frequency", (int)Parameters["Frame1Trigger"] - 1, (int)Parameters["ExposureTime"] + 2, (double)Parameters["absImageRepumpDetuning"], (double)Parameters["aom1Detuning"]);
        p.AddAnalogValue("coil0current", 130000, 0);
        p.AddAnalogValue("coil1current", 130000, 0);


        //p.SwitchAllOffAtEndOfPattern(); //I've commented this as it switches the VCO off, which unlocks the D1 laser.
        return(p);
    }
Example #6
0
    public override AnalogPatternBuilder GetAnalogPattern()
    {
        AnalogPatternBuilder p = new AnalogPatternBuilder((int)Parameters["PatternLength"]);

        MOTMasterScriptSnippet lm = new SHLoadMOT(p, Parameters);

        p.AddChannel("aom0frequency");
        p.AddChannel("aom1frequency");
        p.AddChannel("aom2frequency");
        p.AddChannel("aom3frequency");
        p.AddChannel("aom0amplitude");
        p.AddChannel("aom1amplitude");
        p.AddChannel("aom3amplitude");

        p.AddAnalogValue("coil0current", 0, 0);
        p.AddAnalogValue("coil1current", 0, 0);
        p.AddAnalogValue("aom0frequency", 0, (double)Parameters["aom0Detuning"]);
        p.AddAnalogValue("aom1frequency", 0, (double)Parameters["aom1Detuning"]);
        p.AddAnalogValue("aom2frequency", 0, (double)Parameters["aom2Detuning"]);
        p.AddAnalogValue("aom3frequency", 0, (double)Parameters["aom3Detuning"]);
        p.AddAnalogValue("aom0amplitude", 0, 6.0);
        p.AddAnalogValue("aom1amplitude", 0, (double)Parameters["aom1Power"]);
        p.AddAnalogValue("aom3amplitude", 0, 6.0);
        p.AddAnalogValue("aom3frequency", (int)Parameters["Frame0Trigger"] - 10, (double)Parameters["absImageDetuning"]);
        p.AddAnalogValue("aom3amplitude", (int)Parameters["Frame0Trigger"] - 10, (double)Parameters["absImagePower"]);
        p.AddAnalogPulse("aom1frequency", (int)Parameters["Frame0Trigger"] - 1, (int)Parameters["ExposureTime"] + 2, (double)Parameters["absImageRepumpDetuning"], (double)Parameters["aom1Detuning"]);

        //cooling pulse - linearly ramp MOT frequency, amplitude and repump amplitude
        //p.AddLinearRamp("aom0frequency", (int)Parameters["CMOTStartTime"], 650, (double)Parameters["CoolingPulseDetuning"]);
        p.AddLinearRamp("aom0amplitude", (int)Parameters["CMOTStartTime"], 650, (double)Parameters["CoolingPulseIntensity"]);
        p.AddLinearRamp("aom1amplitude", (int)Parameters["CMOTStartTime"], 650, (double)Parameters["CoolingPulseRepumpIntensity"]);

        //use to linearly ramp the magnetic field up during the CMOT phase
        p.AddLinearRamp("coil0current", (int)Parameters["CMOTStartTime"], 650, (double)Parameters["BottomMagCoilCurrent"]);
        p.AddLinearRamp("coil1current", (int)Parameters["CMOTStartTime"], 650, (double)Parameters["TopMagCoilCurrent"]);

        //use to linearly ramp the magnetic field up whilst the atoms are in the magnetic trap
        //p.AddLinearRamp("coil0current", (int)Parameters["CMOTEndTime"] + 1, (int)Parameters["SecondaryRampLength"], (double)Parameters["BottomMagCoilCurrentFinal"]);
        //p.AddLinearRamp("coil1current", (int)Parameters["CMOTEndTime"] + 1, (int)Parameters["SecondaryRampLength"], (double)Parameters["TopMagCoilCurrentFinal"]);

        //use to switch the magnetic field up during the CMOT phase
        //p.AddAnalogValue("coil0current", (int)Parameters["CMOTStartTime"], (double)Parameters["BottomMagCoilCurrent"]);
        //p.AddAnalogValue("coil1current", (int)Parameters["CMOTStartTime"], (double)Parameters["TopMagCoilCurrent"]);

        //linearly ramp MOT frequency, amplitude and repump amplitude back to usual MOT values
        //p.AddLinearRamp("aom0frequency", (int)Parameters["CMOTStartTime"] + 501, 500, (double)Parameters["aom0Detuning"]);
        //p.AddLinearRamp("aom0amplitude", (int)Parameters["CMOTStartTime"] + 501, 500, 6.0);
        //p.AddLinearRamp("aom1amplitude", (int)Parameters["CMOTStartTime"] + 501, 500, (double)Parameters["aom1Power"]);

        //linearly ramp the magnetic field back down to the usual MOT parameters
        //p.AddLinearRamp("coil0current", (int)Parameters["CMOTStartTime"] + 501, 500, (double)Parameters["BottomMOTCoilCurrent"]);
        //p.AddLinearRamp("coil1current", (int)Parameters["CMOTStartTime"] + 501, 500, (double)Parameters["TopMOTCoilCurrent"]);

        //for loading into the mag trap - linearly ramp the magnetic field back down whilst the atoms are in the mag trap
        //p.AddLinearRamp("coil0current", (int)Parameters["MagRampDownTime"] + 1, (int)Parameters["SecondaryRampLength"], (double)Parameters["BottomMagCoilCurrent"]);
        //p.AddLinearRamp("coil1current", (int)Parameters["MagRampDownTime"] + 1, (int)Parameters["SecondaryRampLength"], (double)Parameters["TopMagCoilCurrent"]);

        //for loading into mag trap - linearly ramp MOT frequency, amplitude and repump amplitude back to usual MOT values
        //p.AddLinearRamp("aom0frequency", (int)Parameters["CMOTEndTime"] + 501, 650, (double)Parameters["aom0Detuning"]);
        p.AddLinearRamp("aom0amplitude", (int)Parameters["CMOTRecaptureTime"] + 10, 650, 6.0);
        p.AddLinearRamp("aom1amplitude", (int)Parameters["CMOTRecaptureTime"] + 10, 650, (double)Parameters["aom1Power"]);

        //for loading into the mag trap - linearly ramp the magnetic field back down to the usual MOT parameters
        p.AddLinearRamp("coil0current", (int)Parameters["CMOTRecaptureTime"] + 10, 650, (double)Parameters["BottomMOTCoilCurrent"]);
        p.AddLinearRamp("coil1current", (int)Parameters["CMOTRecaptureTime"] + 10, 650, (double)Parameters["TopMOTCoilCurrent"]);

        //for loading into the mag trap - switch the magnetic field back down to the usual MOT parameters
        //p.AddAnalogValue("coil0current", (int)Parameters["CMOTEndTime"] + 501, (double)Parameters["BottomMOTCoilCurrent"]);
        //p.AddAnalogValue("coil1current", (int)Parameters["CMOTEndTime"] + 501, (double)Parameters["TopMOTCoilCurrent"]);

        //switch MOT frequency, amplitude and repump amplitude back to usual MOT values
        //p.AddAnalogValue("aom0frequency", (int)Parameters["CMOTStartTime"] + 501, (double)Parameters["aom0Detuning"]);
        //p.AddAnalogValue("aom0amplitude", (int)Parameters["CMOTStartTime"] + 501, 6.0);
        //p.AddAnalogValue("aom1amplitude", (int)Parameters["CMOTStartTime"] + 501, (double)Parameters["aom1Power"]);

        //switch magnetic field back down to the usual MOT parameters
        //p.AddAnalogValue("coil0current", (int)Parameters["CMOTStartTime"] + 501, (double)Parameters["BottomMOTCoilCurrent"]);
        //p.AddAnalogValue("coil1current", (int)Parameters["CMOTStartTime"] + 501, (double)Parameters["TopMOTCoilCurrent"]);

        p.AddAnalogValue("aom1frequency", (int)Parameters["Frame1Trigger"] - 1, (double)Parameters["absImageRepumpDetuning"]);

        p.AddAnalogValue("coil0current", (int)Parameters["MOTEndTime"], 0);
        p.AddAnalogValue("coil1current", (int)Parameters["MOTEndTime"], 0);

        p.SwitchAllOffAtEndOfPattern();
        return(p);
    }
Example #7
0
    public override AnalogPatternBuilder GetAnalogPattern()
    {
        AnalogPatternBuilder p = new AnalogPatternBuilder((int)Parameters["PatternLength"]);

        MOTMasterScriptSnippet lm = new SHLoadMOT(p, Parameters);

        p.AddChannel("aom0frequency");
        p.AddChannel("aom1frequency");
        p.AddChannel("aom2frequency");
        p.AddChannel("aom3frequency");
        p.AddChannel("aom0amplitude");
        p.AddChannel("aom1amplitude");
        p.AddChannel("aom3amplitude");

        p.AddAnalogValue("coil0current", 0, 0);
        p.AddAnalogValue("coil1current", 0, 0);
        p.AddAnalogValue("aom0frequency", 0, (double)Parameters["aom0Detuning"]);
        p.AddAnalogValue("aom1frequency", 0, (double)Parameters["aom1Detuning"]);
        p.AddAnalogValue("aom2frequency", 0, (double)Parameters["aom2Detuning"]);
        p.AddAnalogValue("aom3frequency", 0, (double)Parameters["aom3Detuning"]);
        p.AddAnalogValue("aom0amplitude", 0, 6.0);
        p.AddAnalogValue("aom1amplitude", 0, 6.0);
        p.AddAnalogValue("aom3amplitude", 0, 6.0);
        p.AddAnalogValue("aom3frequency", (int)Parameters["Frame0Trigger"] - 10, (double)Parameters["AbsorptionDetuning"]);
        p.AddAnalogValue("aom3amplitude", (int)Parameters["Frame0Trigger"] - 10, (double)Parameters["AbsorptionPower"]);
        p.AddAnalogPulse("aom1frequency", (int)Parameters["Frame0Trigger"] - 1, (int)Parameters["ExposureTime"] + 2, (double)Parameters["ProbeRepumpDetuning"], (double)Parameters["aom1Detuning"]);

        //cooling pulse - switch MOT frequency, amplitude and repump amplitude
        //p.AddAnalogPulse("aom0frequency", (int)Parameters["CoolingPulseStartTime"], (int)Parameters["CoolingPulseDuration"], (double)Parameters["CoolingPulseDetuning"], (double)Parameters["aom0Detuning"]);
        //p.AddAnalogPulse("aom0amplitude", (int)Parameters["CoolingPulseStartTime"], (int)Parameters["CoolingPulseDuration"], (double)Parameters["CoolingPulseIntensity"], 6.0);
        //p.AddAnalogPulse("aom1amplitude", (int)Parameters["CoolingPulseStartTime"], (int)Parameters["CoolingPulseDuration"], (double)Parameters["CoolingPulseRepumpIntensity"], 6.0);

        //cooling pulse - linearly ramp MOT frequency, amplitude and repump amplitude
        //p.AddLinearRamp("aom0frequency", (int)Parameters["CoolingPulseStartTime"], (int)Parameters["CoolingPulseDuration"], (double)Parameters["CoolingPulseDetuning"]);
        p.AddLinearRamp("aom0amplitude", (int)Parameters["CoolingPulseStartTime"], (int)Parameters["CoolingPulseDuration"], (double)Parameters["CoolingPulseIntensity"]);
        p.AddLinearRamp("aom1amplitude", (int)Parameters["CoolingPulseStartTime"], (int)Parameters["CoolingPulseDuration"], (double)Parameters["CoolingPulseRepumpIntensity"]);

        //use for switching the magnetic field to a higher value during the CMOT phase
        //p.AddAnalogValue("coil0current", (int)Parameters["CMOTStartTime"], (double)Parameters["BottomMagCoilCurrent"]);
        //p.AddAnalogValue("coil1current", (int)Parameters["CMOTStartTime"], (double)Parameters["TopMagCoilCurrent"]);

        //use to linearly ramp the magnetic field up during the CMOT phase
        p.AddLinearRamp("coil0current", (int)Parameters["CMOTStartTime"], (int)Parameters["CoolingPulseDuration"], (double)Parameters["BottomMagCoilCurrent"]);
        p.AddLinearRamp("coil1current", (int)Parameters["CMOTStartTime"], (int)Parameters["CoolingPulseDuration"], (double)Parameters["TopMagCoilCurrent"]);

        //secondary ramp - use to linearly ramp the magnetic field up whilst the atoms are in the magnetic trap
        //p.AddLinearRamp("coil0current", (int)Parameters["CMOTEndTime"] + 1, 1000, (double)Parameters["BottomMagCoilCurrentFinal"]);
        //p.AddLinearRamp("coil1current", (int)Parameters["CMOTEndTime"] + 1, 1000, (double)Parameters["TopMagCoilCurrentFinal"]);

        // pulsing off magnetic field in order to optically pump the atoms
        //p.AddAnalogPulse("coil0current", (int)Parameters["CMOTEndTime"], 10000, 0.0, (double)Parameters["BottomMagCoilCurrent"]);
        //p.AddAnalogPulse("coil1current", (int)Parameters["CMOTEndTime"], 10000, 0.0, (double)Parameters["TopMagCoilCurrent"]);

        //use for imaging the cloud released from the mag trap
        //p.AddAnalogPulse("aom1frequency", (int)Parameters["Frame1Trigger"] - 2, (int)Parameters["ExposureTime"] + 4, (double)Parameters["ProbeRepumpDetuning"], (double)Parameters["aom1Detuning"]);
        //p.AddAnalogValue("aom1amplitude", (int)Parameters["CMOTEndTime"] + 2, 6.0);
        //p.AddAnalogValue("aom1frequency", (int)Parameters["CMOTEndTime"] + 2, (double)Parameters["ProbeRepumpDetuning"]);
        //p.AddAnalogValue("coil0current", (int)Parameters["Frame2Trigger"] - 2, 0);
        //p.AddAnalogValue("coil1current", (int)Parameters["Frame2Trigger"] - 2, 0);

        //secondary ramp - use for ramping the current down whilst the atoms are in the magnetic trap
        //p.AddLinearRamp("coil0current", (int)Parameters["ReformMOTTime"] - 1000, 1000, (double)Parameters["BottomMagCoilCurrent"]);
        //p.AddLinearRamp("coil1current", (int)Parameters["ReformMOTTime"] - 1000, 1000, (double)Parameters["TopMagCoilCurrent"]);

        //use for imaging the atoms in the reformed MOT (linear ramp of parameters back to usual MOT values)
        //p.AddLinearRamp("aom0amplitude", (int)Parameters["ReformMOTTime"] + 1, (int)Parameters["CoolingPulseDuration"], 6.0);
        //p.AddLinearRamp("aom1amplitude", (int)Parameters["ReformMOTTime"] + 1, (int)Parameters["CoolingPulseDuration"], 6.0);
        //p.AddLinearRamp("coil0current", (int)Parameters["ReformMOTTime"] + 1, (int)Parameters["CoolingPulseDuration"], (double)Parameters["BottomMOTCoilCurrent"]);
        //p.AddLinearRamp("coil1current", (int)Parameters["ReformMOTTime"] + 1, (int)Parameters["CoolingPulseDuration"], (double)Parameters["TopMOTCoilCurrent"]);
        //p.AddAnalogPulse("aom1frequency", (int)Parameters["Frame2Trigger"] - 1, (int)Parameters["ExposureTime"] + 2, (double)Parameters["ProbeRepumpDetuning"], (double)Parameters["aom1Detuning"]);

        p.AddAnalogValue("coil0current", (int)Parameters["CMOTEndTime"], 0);
        p.AddAnalogValue("coil1current", (int)Parameters["CMOTEndTime"], 0);
        p.AddAnalogValue("aom1amplitude", (int)Parameters["CMOTEndTime"] + 1, 6.0);
        p.AddAnalogValue("aom1frequency", (int)Parameters["CMOTEndTime"] + 1, (double)Parameters["ProbeRepumpDetuning"]);

        p.SwitchAllOffAtEndOfPattern();
        return(p);
    }