예제 #1
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);
    }
예제 #2
0
    public override AnalogPatternBuilder GetAnalogPattern()
    {
        AnalogPatternBuilder p = new AnalogPatternBuilder((int)Parameters["PatternLength"]);

        MOTMasterScriptSnippet lm = new SHLoadMOT(p, Parameters);

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

        p.AddAnalogValue("coil0current", 0, 0);
        p.AddAnalogValue("aom2frequency", 0, (double)Parameters["aom2Detuning"]);
        p.AddAnalogValue("aom3frequency", 0, (double)Parameters["aom3Detuning"]);
        p.AddAnalogValue("coil0current", 120000, 0);

        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["MOTCoilsCurrentValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTSwitchOffTime"], 0);
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTSwitchOffTime"] + (int)Parameters["MolassesDuration"], (double)Parameters["MOTCoilsCurrentValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTSwitchOffTime"] + (int)Parameters["MolassesDuration"] + (int)Parameters["MOTRecaptureDuration"], 0);

        // For BOP
        p.AddAnalogValue("MOTBOPCoilsCurrent", (int)Parameters["MOTCoilsSwitchOn"], (double)Parameters["MOTBOPCoilsCurrentStartValue"]);
        p.AddAnalogValue("MOTBOPCoilsCurrent", (int)Parameters["MOTSwitchOffTime"], (double)Parameters["MOTBOPCoilsCurrentMolassesValue"]);
        p.AddAnalogValue("MOTBOPCoilsCurrent", (int)Parameters["MOTSwitchOffTime"] + (int)Parameters["MolassesDuration"], (double)Parameters["MOTBOPCoilsCurrentStartValue"]);
        p.AddAnalogValue("MOTBOPCoilsCurrent", (int)Parameters["MOTSwitchOffTime"] + (int)Parameters["MolassesDuration"] + (int)Parameters["MOTRecaptureDuration"], 0);

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

        // 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["MOTSwitchOffTime"] + 100, (double)Parameters["v0IntensityMolassesValue"]);
        p.AddAnalogValue("v0IntensityRamp", (int)Parameters["MOTSwitchOffTime"] + (int)Parameters["MolassesDuration"], (double)Parameters["v0IntensityRampStartValue"]);

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

        p.AddAnalogValue("v0FrequencyRamp", (int)Parameters["MOTSwitchOffTime"] + 100, ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyNewValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]);                                   //jump to blue detuning
        p.AddAnalogValue("v0FrequencyRamp", (int)Parameters["MOTSwitchOffTime"] + (int)Parameters["MolassesDuration"], ((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);
    }
예제 #4
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");

        // 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["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, 5.48);

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

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



        p.SwitchAllOffAtEndOfPattern();
        return(p);
    }
예제 #5
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);
    }
    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.AddAnalogValue("coil0current", 0, 0);
        p.AddAnalogValue("coil1current", 0, 0);
        p.AddAnalogValue("aom0frequency", (int)Parameters["MOTStartTime"], 212.713);
        p.AddAnalogValue("aom1frequency", (int)Parameters["MOTStartTime"], 203.875);
        p.AddAnalogValue("aom2frequency", (int)Parameters["MOTStartTime"], 200.875);
        p.AddAnalogValue("aom3frequency", (int)Parameters["MOTStartTime"], 200.875);
        p.AddAnalogValue("aom0amplitude", (int)Parameters["MOTStartTime"], 5.5);
        p.AddAnalogValue("aom3frequency", (int)Parameters["Frame0Trigger"] - 10, (double)Parameters["AbsDetuning"]);
        p.AddAnalogValue("aom3frequency", (int)Parameters["Frame0Trigger"] + (int)Parameters["ExposureTime"] + 10, 200.875);
        p.AddAnalogValue("coil0current", (int)Parameters["MOTLoadTime"] - 20000, (double)Parameters["BottomMagCoilCurrent"]);
        p.AddAnalogValue("coil1current", (int)Parameters["MOTLoadTime"] - 20000, (double)Parameters["TopMagCoilCurrent"]);
        //p.AddAnalogValue("coil0current", (int)Parameters["MOTLoadTime"], 0); // use this for looking at free expansion of the cloud
        //p.AddAnalogValue("coil1current", (int)Parameters["MOTLoadTime"], 0); // use this for looking at free expansion of the cloud
        p.AddAnalogValue("aom3frequency", (int)Parameters["Frame6Trigger"] - 10, (double)Parameters["AbsDetuning"]);
        p.AddAnalogValue("aom3frequency", (int)Parameters["Frame6Trigger"] + (int)Parameters["ExposureTime"] + 10, 200.875);
        p.AddAnalogValue("aom3frequency", (int)Parameters["Frame1Trigger"] - 10, (double)Parameters["AbsDetuning"]);
        p.AddAnalogValue("aom3frequency", (int)Parameters["Frame1Trigger"] + (int)Parameters["ExposureTime"] + 10, 200.875);
        p.AddAnalogValue("aom0frequency", (int)Parameters["MOTLoadTime"] - (int)Parameters["CoolingPulseDuration"], (double)Parameters["CoolingPulseDetuning"]);       //use for cooling pulse MOT detuning
        p.AddAnalogValue("aom1frequency", (int)Parameters["MOTLoadTime"] - (int)Parameters["CoolingPulseDuration"], (double)Parameters["CoolingPulseRepumpDetuning"]); //use for cooling pulse MOT repump detuning
        p.AddAnalogValue("aom0amplitude", (int)Parameters["MOTLoadTime"] - (int)Parameters["CoolingPulseDuration"], (double)Parameters["CoolingPulseAmplitude"]);      //use for cooling pulse MOT amplitude
        p.AddAnalogValue("aom0frequency", (int)Parameters["Frame3Trigger"] + 1010, 212.713);                                                                           //use for cooling pulse MOT detuning
        p.AddAnalogValue("aom1frequency", (int)Parameters["Frame3Trigger"] + 1010, 203.875);                                                                           //use for cooling pulse MOT repump detuning
        p.AddAnalogValue("aom0amplitude", (int)Parameters["Frame3Trigger"] + 1010, 5.5);                                                                               //use for cooling pulse MOT amplitude
        p.AddAnalogValue("coil0current", 1050000, 0);
        p.AddAnalogValue("coil1current", 1050000, 0);
        //p.AddAnalogValue("aom1frequency", (int)Parameters["Frame2Trigger"] - 10, (double)Parameters["MOTRepumpDetuning"]);
        p.AddAnalogValue("aom3frequency", (int)Parameters["Frame2Trigger"] - 10, (double)Parameters["AbsDetuning"]);

        p.SwitchAllOffAtEndOfPattern();
        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.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

        p.AddLinearRamp("aom3amplitude", (int)Parameters["MOTEndTime"] - 10, 10, 3);
        p.AddLinearRamp("aom3frequency", (int)Parameters["MOTEndTime"] - 10, 10, 180.0);
        p.AddAnalogValue("aom3amplitude", (int)Parameters["MOTEndTime"] + 1, 6.0);
        p.AddAnalogValue("aom3frequency", (int)Parameters["MOTEndTime"] + 1, (double)Parameters["aom3Detuning"]);

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

        //Taking the pictures
        p.AddAnalogValue("D2EOMfrequency", (int)Parameters["Frame0Trigger"] - 5, (double)Parameters["absImageRepumpDetuning"]);
        p.AddAnalogValue("D2EOMamplitude", (int)Parameters["Frame0Trigger"] - 5, (double)Parameters["absImageRepumpAmplitude"]);
        p.AddAnalogValue("aom1frequency", (int)Parameters["Frame0Trigger"] - 5, (double)Parameters["absImageDetuning"]);
        p.AddAnalogValue("aom1amplitude", (int)Parameters["Frame0Trigger"] - 5, (double)Parameters["absImagePower"]);


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

        MOTMasterScriptSnippet lm = new SHLoadMOT(p, Parameters);

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

        p.AddAnalogValue("coil0current", 0, 0);
        p.AddAnalogValue("aom2frequency", (int)Parameters["MOTStartTime"], 180.875);
        p.AddAnalogValue("aom3frequency", (int)Parameters["MOTStartTime"], 220.875);
        p.AddAnalogValue("aom2frequency", (int)Parameters["Frame0Trigger"], 200.875);
        p.AddAnalogValue("aom3frequency", (int)Parameters["Frame0Trigger"], 200.875);
        p.AddAnalogValue("coil0current", 100100, 0);

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

        MOTMasterScriptSnippet lm = new LoadMoleculeMOTNoSlowingEdge(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)
        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"]);
        p.AddLinearRamp("v0IntensityRamp", (int)Parameters["v0IntensityRampStartTime"], (int)Parameters["v0IntensityRampDuration"], (double)Parameters["v0IntensityRampEndValue"]);

        p.AddAnalogValue("v0IntensityRamp", (int)Parameters["PokeStartTime"] + (int)Parameters["PokeDuration"] + (int)Parameters["FreeFlightTime"], (double)Parameters["v0IntensityRampStartValue"]);


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



        p.SwitchAllOffAtEndOfPattern();
        return(p);
    }
예제 #10
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("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);
    }
예제 #11
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");


        // 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);
    }
예제 #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.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("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);
    }
예제 #14
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);
    }
예제 #15
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);
    }
예제 #16
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);
    }
예제 #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.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);
    }
예제 #18
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 resonantMolassesStartTime = molassesStartTime + (int)Parameters["MolassesDuration"];
        int cameraTriggerTime         = resonantMolassesStartTime + (int)Parameters["ResonantMolassesDuration"];

        // 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["MOTCoilsCurrentTopRampStartValue"]);
        p.AddLinearRamp("MOTCoilsCurrentTop", (int)Parameters["MOTCoilsCurrentRampStartTime"], (int)Parameters["MOTCoilsCurrentRampDuration"], (double)Parameters["MOTCoilsCurrentTopRampEndValue"]);
        p.AddAnalogValue("MOTCoilsCurrentTop", (int)Parameters["MOTSwitchOffTime"], (double)Parameters["MOTCoilsCurrentTopMolassesValue"]);
        p.AddAnalogValue("MOTCoilsCurrentTop", (int)Parameters["CoilsSwitchOffTime"], 0.0);
        p.AddAnalogValue("MOTCoilsCurrentBottom", (int)Parameters["MOTCoilsSwitchOn"], (double)Parameters["MOTCoilsCurrentBottomRampStartValue"]);
        p.AddLinearRamp("MOTCoilsCurrentBottom", (int)Parameters["MOTCoilsCurrentRampStartTime"], (int)Parameters["MOTCoilsCurrentRampDuration"], (double)Parameters["MOTCoilsCurrentBottomRampEndValue"]);
        p.AddAnalogValue("MOTCoilsCurrentBottom", (int)Parameters["MOTSwitchOffTime"], (double)Parameters["MOTCoilsCurrentBottomMolassesValue"]);
        p.AddAnalogValue("MOTCoilsCurrentBottom", (int)Parameters["CoilsSwitchOffTime"], 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"]);

        // 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", molassesStartTime, (double)Parameters["v0IntensityMolassesValue"]);
        p.AddAnalogValue("v0IntensityRamp", molassesStartTime + 50, 6.76);
        p.AddAnalogValue("v0IntensityRamp", molassesStartTime + 100, 7.24);
        p.AddAnalogValue("v0IntensityRamp", molassesStartTime + 150, 7.54);
        p.AddAnalogValue("v0IntensityRamp", resonantMolassesStartTime, (double)Parameters["v0IntensityResonantMolassesValue"]);
        p.AddAnalogValue("v0IntensityRamp", cameraTriggerTime, (double)Parameters["v0IntensityRampStartValue"]);

        // v0 F=1 AOM
        p.AddAnalogValue("motAOMAmp", 0, (double)Parameters["v0F1AOMStartValue"]);
        // Turn off F=1 AOM for pumping into F=1
        p.AddAnalogValue("motAOMAmp", resonantMolassesStartTime, (double)Parameters["v0F1AOMOffValue"]);
        // Turn back on for imaging
        p.AddAnalogValue("motAOMAmp", cameraTriggerTime, (double)Parameters["v0F1AOMStartValue"]);

        // v0 Frequency Ramp
        p.AddAnalogValue("v0FrequencyRamp", 0, ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyMOTValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]);
        p.AddAnalogValue("v0FrequencyRamp", molassesStartTime, ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyBlueMolassesValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]);             //jump to blue detuning
        p.AddAnalogValue("v0FrequencyRamp", resonantMolassesStartTime, ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyResonantMolassesValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]); //jump to blue detuning
        p.AddAnalogValue("v0FrequencyRamp", cameraTriggerTime, ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyMOTValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]);                      //jump aom frequency back to normal for imaging

        p.SwitchAllOffAtEndOfPattern();
        return(p);
    }
예제 #19
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 v0F0PumpStartTime = molassesStartTime + (int)Parameters["MolassesDuration"];
        int magTrapStartTime  = v0F0PumpStartTime + (int)Parameters["v0F0PumpDuration"];
        int magTrapEndTime    = magTrapStartTime + (int)Parameters["MagTrapDuration"];
        int imageTime         = magTrapEndTime + (int)Parameters["ExpansionTime"];

        // 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.AddLinearRamp("MOTCoilsCurrent", magTrapStartTime, (int)Parameters["magRampDuration"], (double)Parameters["MOTCoilsCurrentMagTrapValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", magTrapEndTime, 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", 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", imageTime, (double)Parameters["v0IntensityImageValue"]);

        // v0 EOM
        p.AddAnalogValue("v00EOMAmp", 0, 7.17);
        //p.AddAnalogValue("v00EOMAmp", v0F0PumpStartTime, 4.0);
        //p.AddAnalogValue("v00EOMAmp", imageTime, 7.17);

        // 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",
            imageTime,
            ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyMOTValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]
            );

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