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

        MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters);

        int molassesStartTime  = (int)Parameters["MOTSwitchOffTime"] + (int)Parameters["MolassesDelay"];
        int molassesRampTime   = molassesStartTime + (int)Parameters["MolassesHoldTime"];
        int blueMOTCaptureTime = molassesRampTime + (int)Parameters["MolassesRampDuration"];
        int imageTime          = blueMOTCaptureTime + (int)Parameters["MOTWaitBeforeImage"];

        // Add Analog Channels
        p.AddChannel("v00Intensity");
        p.AddChannel("v00Frequency");
        p.AddChannel("xShimCoilCurrent");
        p.AddChannel("yShimCoilCurrent");
        p.AddChannel("v00EOMAmp");
        p.AddChannel("zShimCoilCurrent");

        // 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["MOTCoilsCurrentRampStartValue"]);
        p.AddLinearRamp("MOTCoilsCurrent", (int)Parameters["MOTCoilsCurrentRampStartTime"], (int)Parameters["MOTCoilsCurrentRampDuration"], (double)Parameters["MOTCoilsCurrentRampEndValue"]);
        //p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTSwitchOffTime"], (double)Parameters["MOTCoilsCurrentMolassesValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", blueMOTCaptureTime, (double)Parameters["MOTCoilsCurrentBlueMOTValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["CoilsSwitchOffTime"], 0.0);

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

        // 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", molassesStartTime, (double)Parameters["v0IntensityMolassesValue"]);
        p.AddAnalogValue("v00Intensity", molassesRampTime + 50, 7.4);
        p.AddAnalogValue("v00Intensity", molassesRampTime + 200, 7.83);
        p.AddAnalogValue("v00Intensity", molassesRampTime + 150, 8.09);
        p.AddAnalogValue("v00Intensity", blueMOTCaptureTime, (double)Parameters["v0IntensityBlueMOTValue"]);

        // v0 EOM
        p.AddAnalogValue("v00EOMAmp", 0, (double)Parameters["v0EOMMOTValue"]);

        // v0 Frequency Ramp
        p.AddAnalogValue("v00Frequency", 0, ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyMOTValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]);
        p.AddAnalogValue(
            "v00Frequency",
            molassesStartTime,
            ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyMolassesValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]
            );
        p.AddAnalogValue(
            "v00Frequency",
            blueMOTCaptureTime,
            ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyBlueMOTValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]
            );
        return(p);
    }
    public override AnalogPatternBuilder GetAnalogPattern()
    {
        AnalogPatternBuilder p = new AnalogPatternBuilder((int)Parameters["PatternLength"]);

        int imageTime = (int)Parameters["LoadingDuration"];

        // Add Analog Channels

        p.AddChannel("MOTCoilsCurrent");
        p.AddChannel("xShimCoilCurrent");
        p.AddChannel("yShimCoilCurrent");
        p.AddChannel("zShimCoilCurrent");
        p.AddChannel("rbCoolingIntensity");
        p.AddChannel("rbCoolingFrequency");

        // B Field
        p.AddAnalogValue("MOTCoilsCurrent", 0, (double)Parameters["MOTCoilsCurrentValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", imageTime + 2000, 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"]);

        // Cooling Intensity
        p.AddAnalogValue("rbCoolingIntensity", 0, (double)Parameters["rbCoolingMOTIntensity"]);

        // Cooling frequency
        p.AddAnalogValue("rbCoolingFrequency", 0, (double)Parameters["rbCoolingMOTLoadingFrequency"]);
        p.AddAnalogValue("rbCoolingFrequency", imageTime - 200, (double)Parameters["rbCoolingImagingFrequency"]);

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

        MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters);

        // Add Analog Channels

        p.AddChannel("v0IntensityRamp");
        p.AddChannel("v0FrequencyRamp");
        p.AddChannel("xShimCoilCurrent");
        p.AddChannel("zShimCoilCurrent");


        // B Field
        // For the delta electronica box (bottom MOT coil) - top coil is in digital section
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTCoilsSwitchOn"], (double)Parameters["MOTCoilsCurrentRampStartValue"]);
        p.AddLinearRamp("MOTCoilsCurrent", (int)Parameters["MOTCoilsCurrentRampStartTime"], (int)Parameters["MOTCoilsCurrentRampDuration"], (double)Parameters["MOTCoilsCurrentRampEndValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTCoilsSwitchOff"], 0);

        p.AddAnalogValue("MOTBOPCoilsCurrent", (int)Parameters["MOTCoilsSwitchOn"], (double)Parameters["MOTCoilsCurrentRampStartValue"]);
        p.AddLinearRamp("MOTBOPCoilsCurrent", (int)Parameters["MOTCoilsCurrentRampStartTime"], (int)Parameters["MOTCoilsCurrentRampDuration"], (double)Parameters["MOTCoilsCurrentRampEndValue"]);
        p.AddAnalogValue("MOTBOPCoilsCurrent", (int)Parameters["MOTCoilsSwitchOff"], 0);

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

        // v0 Intensity Ramp
        p.AddAnalogValue("v0IntensityRamp", 0, (double)Parameters["v0IntensityValue"]);

        // v0 Frequency Ramp
        p.AddAnalogValue("v0FrequencyRamp", 0, ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyLoadValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]);
        //p.AddAnalogValue("v0FrequencyRamp", 5500, ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyImageValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]);



        p.SwitchAllOffAtEndOfPattern();
        return(p);
    }
Exemple #4
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);
    }
    public override AnalogPatternBuilder GetAnalogPattern()
    {
        AnalogPatternBuilder p = new AnalogPatternBuilder((int)Parameters["PatternLength"]);

        MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters);

        // Add Analog Channels

        p.AddChannel("v0IntensityRamp");
        p.AddChannel("v0FrequencyRamp");


        // B Field
        // For the delta electronica box (bottom MOT coil) - top coil is in digital section
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTCoilsSwitchOn"], (double)Parameters["MOTCoilsCurrentRampStartValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTCoilsSwitchOff"], 0);

        // v0 Intensity Ramp
        p.AddAnalogValue("v0IntensityRamp", 0, (double)Parameters["v0IntensityRampStartValue"]);
        p.AddLinearRamp("v0IntensityRamp", (int)Parameters["v0IntensityRampStartTime"], (int)Parameters["v0IntensityRampDuration"], (double)Parameters["v0IntensityRampEndValue"]);
        //ramp extension below
        // p.AddLinearRamp("v0IntensityRamp", (int)Parameters["v0IntensityRampStartTime"] + (int)Parameters["v0IntensityRampDuration"]+1, (int)Parameters["v0IntensityRampDuration2"], (double)Parameters["v0IntensityRampEndValue2"]);
        p.AddAnalogValue("v0IntensityRamp", (int)Parameters["MOTSwitchOffTime"], (double)Parameters["v0IntensityRampStartValue"]);
        //(int)Parameters["MOTAOMStartTime"]

        // v0 Frequency Ramp
        //p.AddAnalogValue("v0FrequencyRamp", 0, (double)Parameters["v0FrequencyRampStartValue"]);
        //p.AddAnalogValue("v0FrequencyRamp", (int)Parameters["MOTSwitchOffTime"], (double)Parameters["v0FrequencyRampEndValue"]); //jump aom frequency back to normal for imaging

        // v0 Frequency Ramp
        p.AddAnalogValue("v0FrequencyRamp", 0, ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyStartValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]);
        p.AddAnalogValue("v0FrequencyRamp", 4800, ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyNewValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]);
        p.AddAnalogValue("v0FrequencyRamp", (int)Parameters["MOTSwitchOffTime"], ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyStartValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]); //jump aom frequency back to normal for imaging



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

        MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters);

        // Add Analog Channels

        p.AddChannel("v0IntensityRamp");
        p.AddChannel("v0FrequencyRamp");
        p.AddChannel("xShimCoilCurrent");
        p.AddChannel("zShimCoilCurrent");


        // B Field
        // For the delta electronica box (bottom MOT coil) - top coil is in digital section
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTCoilsSwitchOn"], (double)Parameters["MOTCoilsCurrentRampStartValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTCoilsSwitchOff"], 0);

        // For BOP
        p.AddAnalogValue("MOTBOPCoilsCurrent", (int)Parameters["MOTCoilsSwitchOn"], (double)Parameters["MOTBOPCoilsCurrentStartValue"]);
        p.AddAnalogValue("MOTBOPCoilsCurrent", (int)Parameters["MOTCoilsSwitchOff"], (double)Parameters["MOTBOPCoilsCurrentMolassesValue"]);


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

        // v0 Intensity Ramp
        p.AddAnalogValue("v0IntensityRamp", 0, (double)Parameters["v0IntensityRampStartValue"]);

        // v0 Frequency Ramp
        p.AddAnalogValue("v0FrequencyRamp", 0, (double)Parameters["v0FrequencyRampStartValue"]);



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

        MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters);

        // Add Analog Channels

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


        // 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.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["Frame0Trigger"], 0.0);
        //p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["Frame0Trigger"]-50, 0.0);
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTCoilsSwitchOff"], 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, 4.7);

        // v0 Intensity Ramp
        p.AddAnalogValue("v00Intensity", 0, (double)Parameters["v0IntensityRampStartValue"]);

        // v0 Frequency Ramp
        p.AddAnalogValue("v00Frequency", 0, (double)Parameters["v0FrequencyStartValue"]);

        //v0 chirp
        p.AddAnalogValue("v00Chirp", 0, 0.0);

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

        int motCompressStartTime = (int)Parameters["LoadingDuration"];
        int molassesStartTime    = motCompressStartTime + (int)Parameters["MOTCoilsCurrentRampDuration"] + (int)Parameters["MOTCoilsCurrentWaitAfterRamp"];
        int releaseTime          = molassesStartTime + (int)Parameters["MolassesDuration"];
        int imageTime            = releaseTime + (int)Parameters["ExpansionTime"];

        // Add Analog Channels

        p.AddChannel("MOTCoilsCurrent");
        p.AddChannel("xShimCoilCurrent");
        p.AddChannel("yShimCoilCurrent");
        p.AddChannel("zShimCoilCurrent");
        p.AddChannel("rbCoolingIntensity");

        // B Field
        p.AddAnalogValue("MOTCoilsCurrent", 0, (double)Parameters["MOTCoilsCurrentValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", molassesStartTime, 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"]);

        // Cooling light intensity
        p.AddAnalogValue("rbCoolingIntensity", 0, (double)Parameters["rbCoolingMOTIntensity"]);
        p.AddAnalogValue("rbCoolingIntensity", molassesStartTime, (double)Parameters["rbCoolingMolassesIntensity"]);
        p.AddAnalogValue("rbCoolingIntensity", molassesStartTime + 100, 1.79);
        p.AddAnalogValue("rbCoolingIntensity", molassesStartTime + 200, 1.65);
        p.AddAnalogValue("rbCoolingIntensity", molassesStartTime + 300, 1.48);
        p.AddAnalogValue("rbCoolingIntensity", molassesStartTime + 400, 1.397);
        p.AddAnalogValue("rbCoolingIntensity", molassesStartTime + 600, 1.316);
        p.AddAnalogValue("rbCoolingIntensity", imageTime, (double)Parameters["rbCoolingMOTIntensity"]);

        return(p);
    }
Exemple #9
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.AddAnalogValue("coil0current", 0, 0);
        p.AddAnalogValue("coil1current", 0, 0);
        p.AddAnalogValue("aom0frequency", 0, 212.713);
        p.AddAnalogValue("aom1frequency", 0, 203.875);
        p.AddAnalogValue("aom2frequency", 0, 200.875);
        p.AddAnalogValue("aom3frequency", 0, 200.875);
        p.AddAnalogValue("aom2frequency", (int)Parameters["Frame0Trigger"] - 200, (double)Parameters["ZeemanDetuning"]);
        p.AddAnalogValue("aom3frequency", (int)Parameters["Frame0Trigger"] - 200, (double)Parameters["AbsorptionDetuning"]);
        p.AddAnalogValue("aom2frequency", (int)Parameters["Frame0Trigger"] + (int)Parameters["ExposureTime"] + 100, 200.875);
        p.AddAnalogValue("aom3frequency", (int)Parameters["Frame0Trigger"] + (int)Parameters["ExposureTime"] + 100, 200.875);
        //p.AddAnalogPulse("aom2frequency", (int)Parameters["Frame0Trigger"] - 200, (int)Parameters["ExposureTime"] + 300, 200.875, (double)Parameters["ZeemanDetuning"]);
        //p.AddAnalogPulse("aom3frequency", (int)Parameters["Frame0Trigger"] - 200, (int)Parameters["ExposureTime"] + 300, 200.875, (double)Parameters["AbsorptionDetuning"]);
        p.AddAnalogValue("aom2frequency", (int)Parameters["Frame1Trigger"] - 200, (double)Parameters["ZeemanDetuning"]);
        p.AddAnalogValue("aom3frequency", (int)Parameters["Frame1Trigger"] - 200, (double)Parameters["AbsorptionDetuning"]);
        p.AddLinearRamp("coil0current", 1000000, 2500, (double)Parameters["BottomFinalCoilCurrent"]);
        p.AddLinearRamp("coil1current", 1000000, 2500, (double)Parameters["TopFinalCoilCurrent"]);
        //p.AddAnalogValue("coil0current", 1000000, (double)Parameters["BottomFinalCoilCurrent"]);
        //p.AddAnalogValue("coil1current", 1000000, (double)Parameters["TopFinalCoilCurrent"]);
        p.AddAnalogValue("coil0current", 1050000, 0);
        p.AddAnalogValue("coil1current", 1050000, 0);

        //p.AddAnalogValue("aom2frequency", (int)Parameters["Frame4Trigger"] - 200, 200.875);
        //p.AddAnalogValue("aom3frequency", (int)Parameters["Frame4Trigger"] - 200, 200.875);

        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.AddChannel("aom0amplitude");
        p.AddChannel("aom1amplitude");
        p.AddChannel("aom3amplitude");
        //p.AddChannel("aom2amplitude");

        //initialises all channels before the MOT starts loading
        p.AddAnalogValue("coil0current", 0, 0);
        p.AddAnalogValue("coil1current", 0, 0);
        p.AddAnalogValue("aom0frequency", 0, (double)Parameters["MOTDetuning"]);
        p.AddAnalogValue("aom1frequency", 0, (double)Parameters["MOTRepumpDetuning"]);
        p.AddAnalogValue("aom2frequency", 0, (double)Parameters["ZeemanDetuning"]);
        p.AddAnalogValue("aom3frequency", 0, (double)Parameters["AbsorptionDetuning"]);
        p.AddAnalogValue("aom0amplitude", 0, (double)Parameters["MOTIntensity"]);
        p.AddAnalogValue("aom1amplitude", 0, (double)Parameters["MOTRepumpIntensity"]);
        p.AddAnalogValue("aom3amplitude", 0, 6.0);
        //p.AddAnalogValue("aom2amplitude", 0, (double)Parameters["ZeemanIntensity"]);

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

        //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"]);
        p.AddAnalogValue("aom0amplitude", (int)Parameters["CMOTEndTime"] + 1, (double)Parameters["MOTIntensity"]);
        //p.AddAnalogValue("aom0frequency", (int)Parameters["CMOTEndTime"] + 1, (double)Parameters["MOTDetuning"]);
        p.AddAnalogValue("aom1amplitude", (int)Parameters["CMOTEndTime"] + 1, (double)Parameters["AbsRepumpIntensity"]);
        p.AddAnalogValue("aom1frequency", (int)Parameters["CMOTEndTime"] + 1, (double)Parameters["AbsRepumpDetuning"]);
        p.AddAnalogValue("aom3frequency", (int)Parameters["CMOTEndTime"] + 1, (double)Parameters["AbsDetuning"]);
        p.AddAnalogValue("aom3amplitude", (int)Parameters["CMOTEndTime"] + 1, (double)Parameters["AbsPower"]);

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

        //switches off the magnetic field to image the mag trap atoms
        p.AddAnalogValue("coil0current", (int)Parameters["MagTrapEndTime"] + 4, 0);
        p.AddAnalogValue("coil1current", (int)Parameters["MagTrapEndTime"] + 4, 0);

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

        p.AddChannel("offsetlockfrequency");

        p.AddAnalogValue("offsetlockfrequency", 0, (double)Parameters["StartOLF"]);
        p.AddLinearRamp("offsetlockfrequency", (int)Parameters["SwitchTime"], 100, (double)Parameters["FinalOLF"]);



        p.SwitchAllOffAtEndOfPatternExcept(new string[] { "offsetlockfrequency" });
        return(p);
    }
Exemple #12
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);        //setting up the MOT
        p.AddAnalogValue("offsetlockfrequency", 0, 10.0); //set the offset frequency for the D1 laser

        //Turn coils off to start D1 phase, adjust repumper beam power for D1 cooling
        p.AddAnalogValue("coil0current", (int)Parameters["D1StartTime"] - 2, 0);
        p.AddAnalogValue("coil1current", (int)Parameters["D1StartTime"] - 2, 0);
        p.AddAnalogValue("coil1current", (int)Parameters["D1StartTime"], 0);
        p.AddAnalogValue("aom1amplitude", (int)Parameters["D1StartTime"] - 3, (double)Parameters["D1RepumperPower"]);
        p.AddAnalogValue("aom1frequency", (int)Parameters["D1StartTime"] - 3, (double)Parameters["D1RepumperDetuning"]);
        p.AddAnalogValue("aom0frequency", (int)Parameters["D1StartTime"] - 3, (double)Parameters["D1PrincipalDetuning"]);

        //Adjust the repumper beam power/detuning so we can optically pump to f=2 ground state
        p.AddAnalogValue("aom1amplitude", (int)Parameters["D1StartTime"] + 0, 0.5);
        p.AddAnalogValue("aom1frequency", (int)Parameters["D1StartTime"] + 0, (double)Parameters["absImageRepumpDetuning"]);

        //Taking the pictures
        p.AddAnalogValue("aom3frequency", (int)Parameters["D1StartTime"] + 0, (double)Parameters["absImageDetuning"]);
        p.AddAnalogValue("aom3amplitude", (int)Parameters["D1StartTime"] + 0, (double)Parameters["absImagePower"]);


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

        MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters);

        int molassesStartTime  = (int)Parameters["MOTSwitchOffTime"] + (int)Parameters["MolassesDelay"];
        int molassesRampTime   = molassesStartTime + (int)Parameters["MolassesHoldTime"];
        int releaseTime        = molassesRampTime + (int)Parameters["MolassesRampDuration"];
        int imagingLightOnTime = releaseTime + (int)Parameters["ExpansionTime"];
        int cameraTriggerTime  = imagingLightOnTime + (int)Parameters["WaitBeforeImage"];

        // 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["MOTCoilsCurrentRampStartValue"]);
        p.AddLinearRamp("MOTCoilsCurrent", (int)Parameters["MOTCoilsCurrentRampStartTime"], (int)Parameters["MOTCoilsCurrentRampDuration"], (double)Parameters["MOTCoilsCurrentRampEndValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTSwitchOffTime"], (double)Parameters["MOTCoilsCurrentMolassesValue"]);
        //p.AddAnalogValue("MOTCoilsCurrent", imagingLightOnTime, (double)Parameters["MOTCoilsCurrentRampStartValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["CoilsSwitchOffTime"], 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"]);

        // 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", molassesStartTime, (double)Parameters["v0IntensityMolassesValue"]);
        p.AddAnalogValue("v00Intensity", molassesRampTime + 50, 7.4);
        p.AddAnalogValue("v00Intensity", molassesRampTime + 100, 7.83);
        p.AddAnalogValue("v00Intensity", molassesRampTime + 150, 8.09);
        p.AddAnalogValue("v00Intensity", cameraTriggerTime, (double)Parameters["v0IntensityRampStartValue"]);

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

        // v0 Frequency Ramp
        p.AddAnalogValue("v00Frequency", 0, ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyStartValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]);
        p.AddAnalogValue("v00Frequency", (int)Parameters["MOTSwitchOffTime"], ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyNewValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]); //jump to blue detuning
        p.AddAnalogValue("v00Frequency", cameraTriggerTime, ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyStartValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]);                 //jump aom frequency back to normal for imaging


        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"] - 2, (double)Parameters["AbsorptionDetuning"]);
        p.AddAnalogValue("coil0current", 185000, 0);
        p.AddAnalogValue("coil1current", 185000, 0);

        p.SwitchAllOffAtEndOfPattern();
        return(p);
    }
Exemple #15
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["Frame1Trigger"] - 10, (double)Parameters["absImageDetuning"]);
        p.AddAnalogValue("aom3amplitude", (int)Parameters["Frame1Trigger"] - 10, (double)Parameters["absImagePower"]);

        //cooling pulse - linearly ramp MOT amplitude and repump amplitude
        //p.AddLinearRamp("aom0frequency", (int)Parameters["CMOTStartTime"], 500, (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"]);

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

        //use these for looking at expansion from the MOT with the magnetic field still on or measuring the temperature of the
        //atoms in the magnetic trap
        //p.AddAnalogValue("coil0current", 101150, 0);
        //p.AddAnalogValue("coil1current", 101150, 0);

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

        MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters);

        // Add Analog Channels

        p.AddChannel("v0IntensityRamp");
        p.AddChannel("v0FrequencyRamp");
        p.AddChannel("xShimCoilCurrent");
        p.AddChannel("yShimCoilCurrent");
        p.AddChannel("zShimCoilCurrent");
        //p.AddChannel("triggerDelay");
        p.AddChannel("motAOMAmp");


        // B Field
        // For the delta electronica box (bottom MOT coil) - top coil is in digital section
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTCoilsSwitchOn"], (double)Parameters["MOTCoilsCurrentRampStartValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTCoilsSwitchOff"], 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"]);


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

        //v0aomCalibrationValues
        Parameters["lockAomFrequency"] = 114.1;
        Parameters["calibOffset"]      = 64.2129;
        Parameters["calibGradient"]    = 5.55075;

        // v0 Frequency Ramp
        p.AddAnalogValue("v0FrequencyRamp", 0, ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyStartValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]);

        // v2 Frequency (dodgy code using an unused analogue output to control a TTL switch)
        p.AddAnalogValue("motAOMAmp", 0, (double)Parameters["v2AOMStartValue"]);
        p.AddAnalogValue("motAOMAmp", (int)Parameters["v2SwitchOffTime"], (double)Parameters["v2AOMOffValue"]);
        p.AddAnalogValue("motAOMAmp", (int)Parameters["v2SwitchOnTime"], (double)Parameters["v2AOMStartValue"]);

        p.SwitchAllOffAtEndOfPattern();
        return(p);
    }
Exemple #17
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);
    }
Exemple #18
0
    public override AnalogPatternBuilder GetAnalogPattern()
    {
        AnalogPatternBuilder p = new AnalogPatternBuilder((int)Parameters["PatternLength"]);

        MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters);

        // Add Analog Channels

        p.AddChannel("v0IntensityRamp");
        p.AddChannel("v0FrequencyRamp");
        p.AddChannel("xShimCoilCurrent");
        p.AddChannel("yShimCoilCurrent");
        p.AddChannel("triggerDelay");
        p.AddChannel("motAOMAmp");

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

        // B Field
        p.AddAnalogValue("MOTCoilsCurrentTop", (int)Parameters["MOTCoilsSwitchOn"], (double)Parameters["MOTCoilsCurrentTopValue"]);
        p.AddAnalogValue("MOTCoilsCurrentTop", (int)Parameters["MOTCoilsSwitchOff"], 0.0);
        p.AddAnalogValue("MOTCoilsCurrentBottom", (int)Parameters["MOTCoilsSwitchOn"], (double)Parameters["MOTCoilsCurrentBottomValue"]);
        p.AddAnalogValue("MOTCoilsCurrentBottom", (int)Parameters["MOTCoilsSwitchOff"], 0.0);

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

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

        // F=1
        p.AddAnalogValue("motAOMAmp", 0, (double)Parameters["v0F1AOMStartValue"]);

        // v0 Intensity Ramp
        p.AddAnalogValue("v0IntensityRamp", 0, (double)Parameters["v0IntensityRampStartValue"]);

        // v0 Frequency Ramp
        p.AddAnalogValue("v0FrequencyRamp", 0, (double)Parameters["v0FrequencyRampStartValue"]);



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

        MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters);

        // Add Analog Channels

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



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

        MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters);

        int releaseTime       = (int)Parameters["MOTSwitchOffTime"];
        int cameraTriggerTime = releaseTime + (int)Parameters["ExpansionTime"];

        // 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["MOTCoilsCurrentRampStartValue"]);
        p.AddLinearRamp("MOTCoilsCurrent", (int)Parameters["MOTCoilsCurrentRampStartTime"], (int)Parameters["MOTCoilsCurrentRampDuration"], (double)Parameters["MOTCoilsCurrentRampEndValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", releaseTime, -0.05);

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

        // 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", cameraTriggerTime, (double)Parameters["v0IntensityRampStartValue"]);

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

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


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

        MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters);

        // Add Analog Channels

        p.AddChannel("v0IntensityRamp");
        p.AddChannel("v0FrequencyRamp");
        p.AddChannel("xShimCoilCurrent");
        p.AddChannel("yShimCoilCurrent");
        p.AddChannel("zShimCoilCurrent");
        p.AddChannel("motAOMAmp");


        // B Field
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTCoilsSwitchOn"], (double)Parameters["MOTCoilsCurrentStartValue"]);
        //p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MagTrapStartTime"], (double)Parameters["MOTCoilsCurrentMagTrapValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTCoilsSwitchOff"], 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"]);

        // v0 Intensity Ramp
        p.AddAnalogValue("v0IntensityRamp", 0, (double)Parameters["v0IntensityRampStartValue"]);
        p.AddLinearRamp("v0IntensityRamp", (int)Parameters["v0IntensityRampStartTime"], (int)Parameters["v0IntensityRampDuration"], (double)Parameters["v0IntensityRampEndValue"]);
        p.AddAnalogValue("v0IntensityRamp", (int)Parameters["MagTrapStartTime"] + (int)Parameters["MagTrapDuration"], (double)Parameters["v0IntensityRampStartValue"]);

        // v0 Frequency Ramp
        p.AddAnalogValue("v0FrequencyRamp", 0, (double)Parameters["v0FrequencyStartValue"]);

        // v0 F=1 AOM
        p.AddAnalogValue("motAOMAmp", 0, (double)Parameters["v0F1AOMStartValue"]);
        p.AddAnalogValue("motAOMAmp", (int)Parameters["v0F1SwitchOffTime"], (double)Parameters["v0F1AOMOffValue"]);
        p.AddAnalogValue("motAOMAmp", (int)Parameters["MagTrapStartTime"] + (int)Parameters["MagTrapDuration"], (double)Parameters["v0F1AOMStartValue"]);



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

        MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters);

        p.AddChannel("v0FrequencyRamp");

        p.AddAnalogValue(
            "v0FrequencyRamp",
            0,
            ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyNewValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]
            );

        int timeStep       = 1000;
        int cumalativeTime = 10000;

        //while (cumalativeTime < 40000)
        //{
        //    p.AddAnalogValue(
        //        "v0FrequencyRamp",
        //        cumalativeTime + timeStep,
        //        ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyNewValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]
        //    );
        //    p.AddAnalogValue(
        //        "v0FrequencyRamp",
        //        cumalativeTime + 3 * timeStep,
        //        ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyStartValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]
        //    );
        //    cumalativeTime += (4 * timeStep);
        //}


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

        MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters);

        p.AddChannel("v0FrequencyRamp");

        p.AddAnalogValue(
            "v0FrequencyRamp",
            0,
            0
            );

        int timeStep       = 1000;
        int cumalativeTime = 10000;

        while (cumalativeTime < 40000)
        {
            p.AddAnalogValue(
                "v0FrequencyRamp",
                cumalativeTime + timeStep,
                7.17
                );
            p.AddAnalogValue(
                "v0FrequencyRamp",
                cumalativeTime + 3 * timeStep,
                0
                );
            cumalativeTime += (4 * timeStep);
        }


        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.AddChannel("aom0amplitude");
        p.AddChannel("aom1amplitude");
        //p.AddChannel("proberepumpshutter");

        //initialises all channels before the MOT starts loading
        p.AddAnalogValue("coil0current", 0, 0);
        p.AddAnalogValue("coil1current", 0, 0);
        p.AddAnalogValue("aom0frequency", 0, (double)Parameters["MOTDetuning"]);
        p.AddAnalogValue("aom1frequency", 0, (double)Parameters["MOTRepumpDetuning"]);
        p.AddAnalogValue("aom2frequency", 0, (double)Parameters["ZeemanDetuning"]);
        p.AddAnalogValue("aom3frequency", 0, (double)Parameters["AbsDetuning"]);
        p.AddAnalogValue("aom0amplitude", 0, (double)Parameters["MOTIntensity"]);
        p.AddAnalogValue("aom1amplitude", 0, (double)Parameters["MOTRepumpIntensity"]);
        //p.AddAnalogValue("proberepumpshutter", 0, 0.0);

        //switches the probe repump light to the correct frequency for all subsequent images
        p.AddAnalogValue("aom3frequency", (int)Parameters["MOTEndTime"] + 1, (double)Parameters["ProbeDetuning"]);
        p.AddAnalogValue("aom1amplitude", (int)Parameters["MOTEndTime"] + 1, (double)Parameters["ProbeRepumpIntensity"]);
        p.AddAnalogValue("aom1frequency", (int)Parameters["MOTEndTime"] + 1, (double)Parameters["ProbeRepumpDetuning"]);

        //switches off the magnetic field ready for the no atoms image
        p.AddAnalogValue("coil0current", (int)Parameters["MagTrapEndTime"] + 205, 0);
        p.AddAnalogValue("coil1current", (int)Parameters["MagTrapEndTime"] + 205, 0);

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

        MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters);

        // Add Analog Channels

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

        // Add Rb Analog channels
        p.AddChannel("rb3DCoolingFrequency");
        p.AddChannel("rb3DCoolingAttenuation");
        p.AddChannel("rbRepumpFrequency");
        p.AddChannel("rbRepumpAttenuation");
        p.AddChannel("rbAbsImagingFrequency");

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



        // B Field
        p.AddAnalogValue("MOTCoilsCurrent", 0, 0.5);
        //p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTLoadTime"], -0.0); //switch off coils for molasses and optical pumping stage
        //p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTLoadTime"] + (int)Parameters["MolassesDuration"] + (int)Parameters["OpticalPumpingDuration"], (double)Parameters["magneticTraploadingCurrent"]); //turn on mag trap
        //p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTLoadTime"] + (int)Parameters["MolassesDuration"] + (int)Parameters["OpticalPumpingDuration"] + (int)Parameters["magneticTrapDuration"], -0.0); //switch off coils after holding atoms for some time in magnetic trap
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTLoadTime"] - 1000, 0.0); //Jump field to levitation gradient
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTLoadTime"], 1.5);        //Jump field to levitation gradient
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTLoadTime"] + (int)Parameters["magneticTrapDuration"], 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"]);


        //p.AddAnalogValue("yShimCoilCurrent", (int)Parameters["MOTLoadTime"] + (int)Parameters["MolassesDuration"] - 500, (double)Parameters["OpticalPumpingShimField"]);
        //p.AddAnalogValue("xShimCoilCurrent", (int)Parameters["MOTLoadTime"] + (int)Parameters["MolassesDuration"] - 500, (double)Parameters["OpticalPumpingShimFieldX"]);

        //p.AddAnalogValue("yShimCoilCurrent", (int)Parameters["MOTLoadTime"] + (int)Parameters["MOTCoilsCurrentRampDuration"] + (int)Parameters["MolassesDuration"] + 1000, 0.0);
        //p.AddAnalogValue("xShimCoilCurrent", (int)Parameters["MOTLoadTime"] + (int)Parameters["MOTCoilsCurrentRampDuration"] + (int)Parameters["MolassesDuration"] + 1000, 0.0);


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

        // v0 Intensity Ramp
        p.AddAnalogValue("v00Intensity", 0, (double)Parameters["v0IntensityRampStartValue"]);

        // v0 Frequency Ramp
        p.AddAnalogValue("v00Frequency", 0, (double)Parameters["v0FrequencyStartValue"]);

        //v0 chirp
        p.AddAnalogValue("v00Chirp", 0, 0.0);


        //Rb Laser detunings
        p.AddAnalogValue("rb3DCoolingFrequency", 0, (double)Parameters["MOTCoolingLoadingFrequency"]);
        p.AddAnalogValue("rbRepumpFrequency", 0, (double)Parameters["MOTRepumpLoadingFrequency"]);
        p.AddAnalogValue("rbAbsImagingFrequency", 0, (double)Parameters["ImagingFrequency"]);
        p.AddAnalogValue("rb3DCoolingAttenuation", 0, 0.0);


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

        MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters);

        int rbMOTLoadTime            = (int)Parameters["MOTLoadTime"];
        int rbFirstFieldJump         = rbMOTLoadTime + (int)Parameters["RbMOTHoldTime"];
        int rbCMOTStartTime          = rbFirstFieldJump + (int)Parameters["RbFirstCMOTHoldTime"];
        int rbMOTswitchOffTime       = rbCMOTStartTime + (int)Parameters["CMOTRampDuration"] + (int)Parameters["RbCMOTHoldTime"];
        int rbMolassesStartTime      = rbMOTswitchOffTime + (int)Parameters["RbMolassesDelay"];
        int rbMolassesEndTime        = rbMolassesStartTime + (int)Parameters["RbMolassesDuration"];
        int rbMagnteticTrapStartTime = rbMolassesEndTime + (int)Parameters["OpticalPumpingDuration"];
        int rbMagnteticTrapEndTime   = rbMagnteticTrapStartTime + (int)Parameters["MagneticTrapDuration"];
        int cameraTrigger1           = rbMagnteticTrapEndTime + (int)Parameters["WaitBeforeImage"] + (int)Parameters["FreeExpansionTime"];
        int cameraTrigger2           = cameraTrigger1 + (int)Parameters["CameraTriggerDelayAfterFirstImage"]; //probe image
        int cameraTrigger3           = cameraTrigger2 + (int)Parameters["CameraTriggerDelayAfterFirstImage"]; //bg

        // Add Analog Channels

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

        // Add Rb Analog channels
        p.AddChannel("rb3DCoolingFrequency");
        p.AddChannel("rb3DCoolingAttenuation");
        p.AddChannel("rbRepumpFrequency");
        p.AddChannel("rbRepumpAttenuation");
        p.AddChannel("rbAbsImagingFrequency");
        p.AddChannel("rbOffsetLock");

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



        // B Field
        p.AddAnalogValue("MOTCoilsCurrent", 0, (double)Parameters["MOTCoilsCurrentValue"]); //switch on MOT coils to load Rb MOT
        p.AddAnalogValue("MOTCoilsCurrent", rbFirstFieldJump, (double)Parameters["CaFMOTLoadGradient"]);
        p.AddLinearRamp("MOTCoilsCurrent", rbCMOTStartTime, (int)Parameters["CMOTRampDuration"], (double)Parameters["CMOTEndValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", rbMOTswitchOffTime, 0.0); //switch off coils after MOT is loaded
        p.AddAnalogValue("MOTCoilsCurrent", rbMagnteticTrapStartTime, (double)Parameters["MagTrapGradient"]);
        p.AddAnalogValue("MOTCoilsCurrent", rbMagnteticTrapEndTime, 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"]);


        //p.AddAnalogValue("yShimCoilCurrent", (int)Parameters["MOTLoadTime"] + (int)Parameters["MolassesDuration"] - 200, (double)Parameters["OpticalPumpingShimField"]);
        //p.AddAnalogValue("xShimCoilCurrent", (int)Parameters["MOTLoadTime"]+ (int)Parameters["MolassesDuration"] - 500, (double)Parameters["OpticalPumpingShimFieldX"]);

        //p.AddAnalogValue("yShimCoilCurrent", (int)Parameters["MOTLoadTime"] + (int)Parameters["MOTCoilsCurrentRampDuration"] + (int)Parameters["MolassesDuration"] + 1000, 0.0);
        //p.AddAnalogValue("xShimCoilCurrent", (int)Parameters["MOTLoadTime"] + (int)Parameters["MOTCoilsCurrentRampDuration"] + (int)Parameters["MolassesDuration"] + 1000, 0.0);


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

        // v0 Intensity Ramp
        p.AddAnalogValue("v00Intensity", 0, (double)Parameters["v0IntensityRampStartValue"]);

        // v0 Frequency Ramp
        p.AddAnalogValue("v00Frequency", 0, (double)Parameters["v0FrequencyStartValue"]);

        //v0 chirp
        p.AddAnalogValue("v00Chirp", 0, 0.0);

        //Rb Laser detunings for loading the MOT
        p.AddAnalogValue("rb3DCoolingFrequency", 0, (double)Parameters["MOTCoolingLoadingFrequency"]);
        p.AddAnalogValue("rbRepumpFrequency", 0, (double)Parameters["MOTRepumpLoadingFrequency"]);
        p.AddAnalogValue("rbAbsImagingFrequency", 0, (double)Parameters["ImagingFrequency"]);

        //Rb laser detunings for CMOT steps:
        p.AddAnalogValue("rb3DCoolingFrequency", rbCMOTStartTime, (double)Parameters["RbCoolingFrequencyCMOT"]);
        p.AddAnalogValue("rbRepumpFrequency", rbCMOTStartTime, (double)Parameters["RbRepumpFrequencyCMOT"]);

        //Rb molasses:
        p.AddLinearRamp("rb3DCoolingFrequency", rbMolassesStartTime, (int)Parameters["RbMolassesDuration"], (double)Parameters["RbMolassesEndDetuning"]);

        p.AddAnalogValue("rbOffsetLock", 0, 1.1);

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

        MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters);

        int rbMOTLoadTime       = (int)Parameters["MOTLoadTime"];
        int rbFirstFieldJump    = rbMOTLoadTime + (int)Parameters["RbMOTHoldTime"];
        int rbCMOTStartTime     = rbFirstFieldJump + (int)Parameters["RbFirstCMOTHoldTime"];
        int rbMOTswitchOffTime  = rbCMOTStartTime + (int)Parameters["CMOTRampDuration"] + (int)Parameters["RbCMOTHoldTime"];
        int rbMolassesStartTime = rbMOTswitchOffTime + (int)Parameters["RbMolassesDelay"];
        int rbMolassesEndTime   = rbMolassesStartTime + (int)Parameters["RbMolassesDuration"];
        //int rbMagnteticTrapStartTime = rbMolassesEndTime + (int)Parameters["OpticalPumpingDuration"];
        int rbMagnteticTrapStartTime = rbMolassesEndTime;
        int rbMagnteticTrapTransferToExternalStartTime = rbMagnteticTrapStartTime + 10000;
        int rbMagnteticTrapTransferToExternalEndTime   = rbMagnteticTrapTransferToExternalStartTime + (int)Parameters["TransferRampDurationExternalCoils"];
        int startMotionTime        = rbMagnteticTrapTransferToExternalEndTime + (int)Parameters["MotionDelay"];
        int rbMagnteticTrapEndTime = startMotionTime + (int)Parameters["MagneticTrapDuration"];
        //int speedbumpon = startMotionTime + (int)Parameters["SpeedBumpCoilsOn"];
        // int cameraTrigger1 = rbMagnteticTrapEndTime + (int)Parameters["WaitBeforeImage"] + (int)Parameters["FreeExpansionTime"]; //image after transfer to external coils
        //int cameraTrigger0 = rbMagnteticTrapStartTime + (int)Parameters["DelayFromTransferStart"];//image before transfer to external coils
        //int cameraTrigger2 = cameraTrigger1 + (int)Parameters["CameraTriggerDelayAfterFirstImage"]; //probe image, //image after transfer to external coils
        //int cameraTrigger1 = rbMagnteticTrapStartTime + (int)Parameters["DelayFromTransferStart"];

        int rampUpInternalTweezerMagTrap  = rbMagnteticTrapEndTime + (int)Parameters["RampUpDelayIntMagTrapTweezer"];
        int InternalTweezerMagTrapEndTime = rampUpInternalTweezerMagTrap + (int)Parameters["RampUpDurationIntMagTrapTweezer"] + (int)Parameters["DurationIntMagTrapTweezer"];

        int DipoleTrapSwitchOnTime  = InternalTweezerMagTrapEndTime - (int)Parameters["DipoleTrapMagTrapOverlapDuration"];
        int DipoleTrapSwitchOffTime = DipoleTrapSwitchOnTime + (int)Parameters["DurationDipoleTrap"];

        int cameraTrigger1 = rbMagnteticTrapTransferToExternalEndTime + (int)Parameters["DelayFromTransferStart"];
        //int cameraTrigger1 = rbMolassesStartTime + (int)Parameters["DelayFromTransferStart"];
        //int cameraTrigger1 = rbMolassesEndTime + (int)Parameters["DelayFromTransferStart"];
        //int cameraTrigger2 = rbMagnteticTrapEndTime + (int)Parameters["WaitBeforeImage"] + (int)Parameters["FreeExpansionTime"] + (int)Parameters["CameraTriggerDelayAfterFirstImage"]; //probe image, //image before transfer to external coils
        //int cameraTrigger3 = cameraTrigger2 + (int)Parameters["CameraTriggerDelayAfterFirstImage"]; //bg
        int cameraTrigger2 = cameraTrigger1 + (int)Parameters["WaitBeforeImage"] + (int)Parameters["FreeExpansionTime"] + (int)Parameters["CameraTriggerDelayAfterFirstImage"]; //probe image, //image before transfer to external coils
        int cameraTrigger3 = cameraTrigger2 + (int)Parameters["CameraTriggerDelayAfterFirstImage"];                                                                             //bg


        int absprobeswitchoff   = cameraTrigger2 + (int)Parameters["Frame0TriggerDuration"] + 20; //bg
        int coolingimgswitchoff = cameraTrigger1 + 20;                                            //bg
        int swtichAllOn         = cameraTrigger3 + 5000;

        // Add Analog Channels

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

        // Add Rb Analog channels
        p.AddChannel("rb3DCoolingFrequency");
        p.AddChannel("rb3DCoolingAttenuation");
        p.AddChannel("rbRepumpFrequency");
        p.AddChannel("rbRepumpAttenuation");
        p.AddChannel("rbAbsImagingFrequency");
        p.AddChannel("rbOffsetLock");
        p.AddChannel("transferCoils");
        p.AddChannel("transferCoilsShunt1");
        p.AddChannel("transferCoilsShunt2");
        p.AddChannel("speedbumpCoils");
        p.AddChannel("TweezerMOTCoils");
        p.AddChannel("DipoleTrapLaserControl");

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



        // B Field
        p.AddAnalogValue("speedbumpCoils", 0, -0.02);
        p.AddAnalogValue("DipoleTrapLaserControl", 0, 0.0);

        p.AddAnalogValue("TweezerMOTCoils", 0, -0.02);

        //p.AddAnalogValue("transferCoilsShunt1", 0, -0.02);
        //p.AddAnalogValue("transferCoilsShunt2", 0, -0.02);

        p.AddAnalogValue("transferCoils", 0, 0.0);                                          //start with external coils off
        p.AddAnalogValue("MOTCoilsCurrent", 0, (double)Parameters["MOTCoilsCurrentValue"]); //switch on MOT coils to load Rb MOT
        p.AddAnalogValue("MOTCoilsCurrent", rbFirstFieldJump, (double)Parameters["CaFMOTLoadGradient"]);
        p.AddLinearRamp("MOTCoilsCurrent", rbCMOTStartTime, (int)Parameters["CMOTRampDuration"], (double)Parameters["CMOTEndValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", rbMOTswitchOffTime, -0.05); //switch off coils after MOT is loaded
        p.AddAnalogValue("MOTCoilsCurrent", rbMagnteticTrapStartTime, (double)Parameters["MagTrapInternalGradient"]);

        p.AddLinearRamp("MOTCoilsCurrent", rbMagnteticTrapTransferToExternalStartTime, (int)Parameters["TransferRampDurationInternalCoils"], 0.0);

        p.AddLinearRamp("transferCoils", rbMagnteticTrapTransferToExternalStartTime, (int)Parameters["TransferRampDurationExternalCoils"], (double)Parameters["ExternalMagTrapRampEndValue"]);

        p.AddLinearRamp("transferCoils", rbMagnteticTrapEndTime, (int)Parameters["RampDownTimeTransportTrap"], 0.0);

        p.AddLinearRamp("TweezerMOTCoils", rampUpInternalTweezerMagTrap, (int)Parameters["RampUpDurationIntMagTrapTweezer"], (double)Parameters["CurrentEndValueIntMagTrapTweezer"]);
        //p.AddLinearRamp("MOTCoilsCurrent", rampUpInternalTweezerMagTrap , (int)Parameters["RampUpDurationIntMagTrapTweezer"], (double)Parameters["CurrentEndValueIntMagTrapTweezer"]);

        p.AddAnalogValue("TweezerMOTCoils", InternalTweezerMagTrapEndTime, -0.02);

        p.AddAnalogValue("speedbumpCoils", DipoleTrapSwitchOnTime, 1.5);
        p.AddAnalogValue("DipoleTrapLaserControl", DipoleTrapSwitchOnTime, 5.0);

        p.AddAnalogValue("speedbumpCoils", DipoleTrapSwitchOffTime, -0.02);
        p.AddAnalogValue("DipoleTrapLaserControl", DipoleTrapSwitchOffTime, 0.0);

        //p.AddAnalogValue("MOTCoilsCurrent", InternalTweezerMagTrapEndTime, -0.02);

        //p.AddAnalogValue("transferCoilsShunt1", rbMagnteticTrapTransferToExternalEndTime + 1000, 0.1);
        //p.AddAnalogValue("transferCoilsShunt2", rbMagnteticTrapTransferToExternalEndTime + 1000, 0.1);

        /*
         *
         * // [131,135,140, 145,150,156, 162, 166, 170, 175, 180,186, 190, 195, 200, 205, 209, 216, 220]
         * // [ 57500., 58000., 58750., 59500., 60250., 61125., 62000., 62625.,63125., 63875. 64625., 65500., 66125., 66875., 67500., 68250., 68875., 69875., 70500.]
         *
         * p.AddAnalogValue("speedbumpCoils", startMotionTime + 58000, -0.08);
         * p.AddAnalogValue("speedbumpCoils", startMotionTime + 59000, -0.15);
         * p.AddAnalogValue("speedbumpCoils", startMotionTime + 60000, -0.3);
         * p.AddAnalogValue("speedbumpCoils", startMotionTime + 61000, -0.25);
         * p.AddAnalogValue("speedbumpCoils", startMotionTime + 62000, -0.2);
         *
         * p.AddAnalogValue("speedbumpCoils", startMotionTime + 64000, 0.4);
         * p.AddAnalogValue("speedbumpCoils", startMotionTime + 65000, 0);
         * //p.AddAnalogValue("speedbumpCoils", startMotionTime + 65000, 0.1);
         * //p.AddAnalogValue("speedbumpCoils", startMotionTime + 66000, 0);
         * //p.AddAnalogValue("speedbumpCoils", startMotionTime + 68000, -0.3);
         * p.AddAnalogValue("speedbumpCoils", startMotionTime + 68500, -0.45);
         *
         * p.AddAnalogValue("speedbumpCoils", startMotionTime + 70000, -0.55);
         *
         * p.AddAnalogValue("speedbumpCoils", startMotionTime + 72000, 0);
         *
         *
         * p.AddAnalogValue("transferCoilsShunt1", startMotionTime + 58000, 0.06);
         * p.AddAnalogValue("transferCoilsShunt1", startMotionTime + 60000, 0.18);
         * p.AddAnalogValue("transferCoilsShunt1", startMotionTime + 61000, 0.2);
         * p.AddAnalogValue("transferCoilsShunt1", startMotionTime + 61500, 0.25);
         * p.AddAnalogValue("transferCoilsShunt1", startMotionTime + 62000, 0.45);
         *
         * p.AddAnalogValue("transferCoilsShunt1", startMotionTime + 64000, 0.55);
         * p.AddAnalogValue("transferCoilsShunt1", startMotionTime + 65000, 0.4);
         * p.AddAnalogValue("transferCoilsShunt1", startMotionTime + 66000, 0.25);
         * p.AddAnalogValue("transferCoilsShunt1", startMotionTime + 68500, 0.2);
         * p.AddAnalogValue("transferCoilsShunt1", startMotionTime + 70500, 0.25);
         *
         * p.AddAnalogValue("transferCoilsShunt1", startMotionTime + 73000, 0.0);
         * p.AddAnalogValue("transferCoilsShunt2", startMotionTime + 73000, 0.05);
         * p.AddAnalogValue("transferCoilsShunt2", startMotionTime + 74500, 0.0);
         *
         * p.AddAnalogValue("transferCoilsShunt1", startMotionTime + 76000, 0.2);
         * p.AddAnalogValue("transferCoilsShunt1", startMotionTime + 78000, 0.4);
         *
         */


        /* **************** Accel 2200 TP 175 ************************
         * double Vfact = -0.1;
         *
         * p.AddLinearRamp("speedbumpCoils", startMotionTime + 59375, 1000, -0.012 + (Vfact * 0));//-0.149
         * p.AddLinearRamp("speedbumpCoils", startMotionTime + 60375, 1375, -0.012 + (Vfact * 0));//-0.179
         * p.AddLinearRamp("speedbumpCoils", startMotionTime + 61750, 1374, -0.012 + (Vfact * 0.8));//0.353
         * p.AddLinearRamp("speedbumpCoils", startMotionTime + 63125, 1500, -0.012 + (Vfact * 1.449));
         * p.AddLinearRamp("speedbumpCoils", startMotionTime + 64625, 2000, -0.012 + (Vfact * 1.795));
         * p.AddLinearRamp("speedbumpCoils", startMotionTime + 66625, 2500, -0.012 + (Vfact * 1.42));
         * p.AddLinearRamp("speedbumpCoils", startMotionTime + 69125, 2000, -0.012 + (Vfact * 1.038));
         * p.AddLinearRamp("speedbumpCoils", startMotionTime + 71125, 2874, -0.012 + (Vfact * -0.11));
         * p.AddLinearRamp("speedbumpCoils", startMotionTime + 74000, 16500, -0.012 + (Vfact * 0.257));
         *
         * double Vfact = 1;
         *
         * p.AddLinearRamp("transferCoilsShunt1", startMotionTime + 59375, 1000, -0.012 + (Vfact * 0.001));
         * p.AddLinearRamp("transferCoilsShunt1", startMotionTime + 60375, 1375, -0.012 + (Vfact * 0.003));
         * p.AddLinearRamp("transferCoilsShunt1", startMotionTime + 61750, 1374, -0.012 + (Vfact * 0.02));
         * p.AddLinearRamp("transferCoilsShunt1", startMotionTime + 63125, 1500, -0.012 + (Vfact * 0.08));//0.006
         * p.AddLinearRamp("transferCoilsShunt1", startMotionTime + 64625, 2000, -0.012 + (Vfact * 0.186));
         * p.AddLinearRamp("transferCoilsShunt1", startMotionTime + 66625, 2500, -0.012 + (Vfact * 0.441));
         * p.AddLinearRamp("transferCoilsShunt1", startMotionTime + 69125, 2000, -0.012 + (Vfact * 0.37));
         * p.AddLinearRamp("transferCoilsShunt1", startMotionTime + 71125, 2874, -0.012 + (Vfact * 0.448));
         * p.AddLinearRamp("transferCoilsShunt1", startMotionTime + 74000, 16500, -0.012 + (Vfact * 0.467));
         *
         */


        /* ***************** Accel 2200 TP 380 ****************************
         * double Vfact = -0.1;
         * p.AddLinearRamp("speedbumpCoils", startMotionTime + 57500, 499, -0.012 + (Vfact * 0));
         * p.AddLinearRamp("speedbumpCoils", startMotionTime + 57999, 750, -0.012 + (Vfact * 0));
         * p.AddLinearRamp("speedbumpCoils", startMotionTime + 58750, 749, -0.012 + (Vfact * 0.8));
         * p.AddLinearRamp("speedbumpCoils", startMotionTime + 59500, 750, -0.012 + (Vfact * 1.449));
         * p.AddLinearRamp("speedbumpCoils", startMotionTime + 60250, 874, -0.012 + (Vfact * 1.795));
         * p.AddLinearRamp("speedbumpCoils", startMotionTime + 61124, 875, -0.012 + (Vfact * 1.42));
         * p.AddLinearRamp("speedbumpCoils", startMotionTime + 62000, 624, -0.012 + (Vfact * 1.038));
         * p.AddLinearRamp("speedbumpCoils", startMotionTime + 62625, 500, -0.012 + (Vfact * -0.11));
         * p.AddLinearRamp("speedbumpCoils", startMotionTime + 63125, 750, -0.012 + (Vfact * 0.257));
         *
         * Vfact = 1;
         * p.AddLinearRamp("transferCoilsShunt1", startMotionTime + 57500, 499, -0.012 + (Vfact * 0.001));
         * p.AddLinearRamp("transferCoilsShunt1", startMotionTime + 57999, 750, -0.012 + (Vfact * 0.003));
         * p.AddLinearRamp("transferCoilsShunt1", startMotionTime + 58750, 749, -0.012 + (Vfact * 0.02));
         * p.AddLinearRamp("transferCoilsShunt1", startMotionTime + 59500, 750, -0.012 + (Vfact * 0.08));
         * p.AddLinearRamp("transferCoilsShunt1", startMotionTime + 60250, 874, -0.012 + (Vfact * 0.186));
         * p.AddLinearRamp("transferCoilsShunt1", startMotionTime + 61124, 875, -0.012 + (Vfact * 0.441));
         * p.AddLinearRamp("transferCoilsShunt1", startMotionTime + 62000, 624, -0.012 + (Vfact * 0.37));
         * p.AddLinearRamp("transferCoilsShunt1", startMotionTime + 62625, 500, -0.012 + (Vfact * 0.448));
         * p.AddLinearRamp("transferCoilsShunt1", startMotionTime + 63125, 750, -0.012 + (Vfact * 0.467));
         *
         */

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


        //p.AddAnalogValue("yShimCoilCurrent", (int)Parameters["MOTLoadTime"] + (int)Parameters["MolassesDuration"] - 200, (double)Parameters["OpticalPumpingShimField"]);
        //p.AddAnalogValue("xShimCoilCurrent", (int)Parameters["MOTLoadTime"]+ (int)Parameters["MolassesDuration"] - 500, (double)Parameters["OpticalPumpingShimFieldX"]);

        //p.AddAnalogValue("yShimCoilCurrent", (int)Parameters["MOTLoadTime"] + (int)Parameters["MOTCoilsCurrentRampDuration"] + (int)Parameters["MolassesDuration"] + 1000, 0.0);
        //p.AddAnalogValue("xShimCoilCurrent", (int)Parameters["MOTLoadTime"] + (int)Parameters["MOTCoilsCurrentRampDuration"] + (int)Parameters["MolassesDuration"] + 1000, 0.0);


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

        // v0 Intensity Ramp
        p.AddAnalogValue("v00Intensity", 0, (double)Parameters["v0IntensityRampStartValue"]);

        // v0 Frequency Ramp
        p.AddAnalogValue("v00Frequency", 0, (double)Parameters["v0FrequencyStartValue"]);

        //v0 chirp
        p.AddAnalogValue("v00Chirp", 0, 0.0);

        //Rb Laser detunings for loading the MOT
        p.AddAnalogValue("rb3DCoolingFrequency", 0, (double)Parameters["MOTCoolingLoadingFrequency"]);
        p.AddAnalogValue("rbRepumpFrequency", 0, (double)Parameters["MOTRepumpLoadingFrequency"]);
        p.AddAnalogValue("rbAbsImagingFrequency", 0, (double)Parameters["ImagingFrequency"]);

        //Rb laser detunings for CMOT steps:
        p.AddAnalogValue("rb3DCoolingFrequency", rbCMOTStartTime, (double)Parameters["RbCoolingFrequencyCMOT"]);
        p.AddAnalogValue("rbRepumpFrequency", rbCMOTStartTime, (double)Parameters["RbRepumpFrequencyCMOT"]);

        //Rb molasses:
        p.AddLinearRamp("rb3DCoolingFrequency", rbMolassesStartTime, (int)Parameters["RbMolassesDuration"], (double)Parameters["RbMolassesEndDetuning"]);

        p.AddAnalogValue("rbOffsetLock", 0, 1.1);


        p.AddAnalogValue("yShimCoilCurrent", 0, 0.0);
        p.AddAnalogValue("yShimCoilCurrent", startMotionTime, 5.0);//This is now used to trigger the translation stage of the transport coils
        p.AddAnalogValue("yShimCoilCurrent", startMotionTime + 100, 0.0);



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

        MOTMasterScriptSnippet lm = new SHLoadMOT(p, Parameters); //loading the MOT

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

        p.AddChannel("aom1amplitude");
        p.AddChannel("aom2amplitude");
        p.AddChannel("aom3amplitude");

        p.AddChannel("D1EOMfrequency");
        p.AddChannel("D1EOMamplitude");
        p.AddChannel("D2EOMfrequency");
        p.AddChannel("D2EOMamplitude");
        p.AddChannel("offsetlockfrequency");


        p.AddAnalogValue("D2EOMfrequency", 0, (double)Parameters["MotRepumpFrequency"]);
        p.AddAnalogValue("D2EOMamplitude", 0, (double)Parameters["MotRepumpAmplitude"]);
        p.AddAnalogValue("aom3frequency", 0, (double)Parameters["aom3Detuning"]);
        p.AddAnalogValue("aom3amplitude", 0, 6.0); //setting up the MOT parameters

        //CMOT
        p.AddLinearRamp("TopTrappingCoilcurrent", (int)Parameters["MOTEndTime"] - (int)Parameters["CMOTTime"] - (int)Parameters["CMOTHoldTime"], (int)Parameters["CMOTTime"], (double)Parameters["CMOTTopVacCurrent"]);
        p.AddLinearRamp("BottomTrappingCoilcurrent", (int)Parameters["MOTEndTime"] - (int)Parameters["CMOTTime"] - (int)Parameters["CMOTHoldTime"], (int)Parameters["CMOTTime"], (double)Parameters["CMOTBottomVacCurrent"]);
        p.AddLinearRamp("aom3amplitude", (int)Parameters["MOTEndTime"] - (int)Parameters["CMOTTime"] - (int)Parameters["CMOTHoldTime"], (int)Parameters["CMOTTime"], (double)Parameters["CMOTFinalPower"]);

        p.AddAnalogValue("TopTrappingCoilcurrent", (int)Parameters["MOTEndTime"], 0);
        p.AddAnalogValue("BottomTrappingCoilcurrent", (int)Parameters["MOTEndTime"], 0);

        //Taking the pictures
        p.AddAnalogValue("D2EOMfrequency", (int)Parameters["MOTEndTime"] + (int)Parameters["ImageDelay"] - 3, (double)Parameters["absImageRepumpDetuning"]);
        p.AddAnalogValue("D2EOMamplitude", (int)Parameters["MOTEndTime"] + (int)Parameters["ImageDelay"] - 3, (double)Parameters["absImageRepumpAmplitude"]);
        p.AddAnalogValue("aom1frequency", (int)Parameters["MOTEndTime"] + (int)Parameters["ImageDelay"] - 1, (double)Parameters["absImageDetuning"]);
        p.AddAnalogValue("aom1amplitude", (int)Parameters["MOTEndTime"] + (int)Parameters["ImageDelay"] - 1, (double)Parameters["absImagePower"]);
        p.AddAnalogValue("aom1amplitude", (int)Parameters["Frame1Trigger"] - 1, (double)Parameters["backgroundImagePower"]);

        p.SwitchAllOffAtEndOfPatternExcept(new string[] { "offsetlockfrequency", "xcoilCurrent", "ycoilcurrent", "zcoilcurrent" });
        return(p);
    }
Exemple #29
0
    public override AnalogPatternBuilder GetAnalogPattern()
    {
        AnalogPatternBuilder p = new AnalogPatternBuilder((int)Parameters["PatternLength"]);

        MOTMasterScriptSnippet lm = new LoadMoleculeMOTNoSlowingEdge(p, Parameters);

        int patternStartBeforeQ      = (int)Parameters["TCLBlockStart"];
        int molassesStartTime        = (int)Parameters["MOTSwitchOffTime"] + (int)Parameters["MolassesDelay"];
        int molassesRampTime         = molassesStartTime + (int)Parameters["MolassesHoldTime"];
        int v0F0PumpStartTime        = molassesRampTime + (int)Parameters["MolassesRampDuration"];
        int microwavePulseTime       = v0F0PumpStartTime + (int)Parameters["v0F0PumpDuration"];
        int blowAwayTime             = microwavePulseTime + (int)Parameters["MicrowavePulseDuration"];
        int secondMicrowavePulseTime = blowAwayTime + (int)Parameters["PokeDuration"];
        int firstRamseyPulseTime     = secondMicrowavePulseTime + (int)Parameters["SecondMicrowavePulseDuration"];
        int ramseyPiPulseTime        = firstRamseyPulseTime + (int)Parameters["FirstRamseyWaitTime"] + (int)Parameters["RamseyPulseDuration"];
        int secondRamseyPulseTime    = ramseyPiPulseTime + (int)Parameters["SecondRamseyWaitTime"] + (int)Parameters["RamseyPiPulseDuration"];
        int magTrapStartTime         = secondRamseyPulseTime + (int)Parameters["RamseyPulseDuration"];
        int motRecaptureTime         = magTrapStartTime + (int)Parameters["MagTrapDuration"];
        int imageTime = motRecaptureTime + (int)Parameters["MOTWaitBeforeImage"];

        // Add Analog Channels
        p.AddChannel("v00Intensity");
        p.AddChannel("v00Frequency");
        p.AddChannel("xShimCoilCurrent");
        p.AddChannel("yShimCoilCurrent");
        p.AddChannel("v00EOMAmp");
        p.AddChannel("zShimCoilCurrent");

        // 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["MOTCoilsCurrentRampStartValue"]);
        p.AddLinearRamp("MOTCoilsCurrent", (int)Parameters["MOTCoilsCurrentRampStartTime"], (int)Parameters["MOTCoilsCurrentRampDuration"], (double)Parameters["MOTCoilsCurrentRampEndValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTSwitchOffTime"], (double)Parameters["MOTCoilsCurrentMolassesValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", magTrapStartTime, (double)Parameters["MOTCoilsCurrentMagTrapValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", motRecaptureTime, (double)Parameters["MOTCoilsCurrentRampStartValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["CoilsSwitchOffTime"], -0.01);

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

        // 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", molassesStartTime, (double)Parameters["v0IntensityMolassesValue"]);
        p.AddAnalogValue("v00Intensity", molassesRampTime + 50, 7.4);
        p.AddAnalogValue("v00Intensity", molassesRampTime + 100, 7.83);
        p.AddAnalogValue("v00Intensity", molassesRampTime + 150, 8.09);
        p.AddAnalogValue("v00Intensity", v0F0PumpStartTime, (double)Parameters["v0IntensityF0PumpValue"]);
        p.AddAnalogValue("v00Intensity", motRecaptureTime, (double)Parameters["v0IntensityImageValue"]);

        // v0 EOM
        p.AddAnalogValue("v00EOMAmp", 0, (double)Parameters["v0EOMMOTValue"]);
        p.AddAnalogValue("v00EOMAmp", v0F0PumpStartTime, (double)Parameters["v0EOMPumpValue"]);
        p.AddAnalogValue("v00EOMAmp", motRecaptureTime, (double)Parameters["v0EOMMOTValue"]);

        // v0 Frequency Ramp
        p.AddAnalogValue("v00Frequency", 0, ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyMOTValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]);
        p.AddAnalogValue(
            "v00Frequency",
            molassesStartTime,
            ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyMolassesValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]
            );
        p.AddAnalogValue(
            "v00Frequency",
            v0F0PumpStartTime,
            ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyF0PumpValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]
            );
        p.AddAnalogValue(
            "v00Frequency",
            motRecaptureTime,
            ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyMOTValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]
            );
        return(p);
    }
    public override AnalogPatternBuilder GetAnalogPattern()
    {
        AnalogPatternBuilder p = new AnalogPatternBuilder((int)Parameters["PatternLength"]);

        MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters);

        int molassesStartTime  = (int)Parameters["MOTSwitchOffTime"] + (int)Parameters["MolassesDelay"];
        int v0F0PumpStartTime  = molassesStartTime + (int)Parameters["MolassesDuration"];
        int microwavePulseTime = v0F0PumpStartTime + (int)Parameters["v0F0PumpDuration"];
        int motRecaptureTime   = microwavePulseTime + (int)Parameters["MicrowavePulseDuration"];
        int imageTime          = motRecaptureTime + (int)Parameters["MOTWaitBeforeImage"];

        // Add Analog Channels
        p.AddChannel("v00Intensity");
        p.AddChannel("v00Frequency");
        p.AddChannel("xShimCoilCurrent");
        p.AddChannel("yShimCoilCurrent");
        p.AddChannel("v00EOMAmp");
        p.AddChannel("zShimCoilCurrent");

        // 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["MOTCoilsCurrentRampStartValue"]);
        p.AddLinearRamp("MOTCoilsCurrent", (int)Parameters["MOTCoilsCurrentRampStartTime"], (int)Parameters["MOTCoilsCurrentRampDuration"], (double)Parameters["MOTCoilsCurrentRampEndValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTSwitchOffTime"], (double)Parameters["MOTCoilsCurrentMolassesValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", motRecaptureTime, (double)Parameters["MOTCoilsCurrentRampStartValue"]);
        //p.AddLinearRamp("MOTCoilsCurrent", motRecaptureTime, 500, (double)Parameters["MOTCoilsCurrentRampStartValue"]);

        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["CoilsSwitchOffTime"], 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"]);
        //p.AddLinearRamp("zShimCoilCurrent", microwavePulseTime, (int)Parameters["MicrowavePulseDuration"], (double)Parameters["zShimLoadCurrent"] + ((double)Parameters["zShimRampRate"] * (int)Parameters["MicrowavePulseDuration"] / 100));
        //p.AddAnalogValue("zShimCoilCurrent", motRecaptureTime, (double)Parameters["zShimLoadCurrent"]);
        //p.AddAnalogValue("xShimCoilCurrent", v0F0PumpStartTime, (double)Parameters["xShimZeemanSplitValue"]);
        //p.AddAnalogValue("xShimCoilCurrent", motRecaptureTime, (double)Parameters["xShimLoadCurrent"]);

        // 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", molassesStartTime, (double)Parameters["v0IntensityMolassesValue"]);
        p.AddAnalogValue("v00Intensity", molassesStartTime + 50, 6.76);
        p.AddAnalogValue("v00Intensity", molassesStartTime + 100, 7.24);
        p.AddAnalogValue("v00Intensity", molassesStartTime + 150, 7.54);
        p.AddAnalogValue("v00Intensity", v0F0PumpStartTime, (double)Parameters["v0IntensityF0PumpValue"]);
        p.AddAnalogValue("v00Intensity", motRecaptureTime, (double)Parameters["v0IntensityImageValue"]);

        // v0 EOM
        p.AddAnalogValue("v00EOMAmp", 0, (double)Parameters["v0EOMMOTValue"]);
        p.AddAnalogValue("v00EOMAmp", v0F0PumpStartTime, (double)Parameters["v0EOMPumpValue"]);
        p.AddAnalogValue("v00EOMAmp", motRecaptureTime, (double)Parameters["v0EOMMOTValue"]);

        // v0 Frequency Ramp
        p.AddAnalogValue("v00Frequency", 0, ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyMOTValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]);
        p.AddAnalogValue(
            "v00Frequency",
            molassesStartTime,
            ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyMolassesValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]
            );
        p.AddAnalogValue(
            "v00Frequency",
            v0F0PumpStartTime,
            ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyF0PumpValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]
            );
        p.AddAnalogValue(
            "v00Frequency",
            motRecaptureTime,
            ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyMOTValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]
            );
        return(p);
    }