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"]);

        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

        p.AddAnalogValue("D1EOMfrequency", 0, (double)Parameters["MolassesRepumpDetuning"]);
        p.AddAnalogValue("D1EOMamplitude", 0, (double)Parameters["MolassesRepumpAmplitude"]);
        p.AddAnalogValue("aom2frequency", 0, (double)Parameters["MolassesPrincipalFrequency"]);
        p.AddAnalogValue("aom2amplitude", 0, (double)Parameters["MolassesPrincipalStartAmplitude"]);
        p.AddAnalogValue("offsetlockfrequency", 0, (double)Parameters["offsetlockvcofrequency"]);//setting up molasses parameters

        p.AddLinearRamp("aom3amplitude", (int)Parameters["MOTEndTime"] - 10, 10, 3);
        p.AddLinearRamp("aom3frequency", (int)Parameters["MOTEndTime"] - 10, 10, 180.0);
        p.AddLinearRamp("TopTrappingCoilcurrent", (int)Parameters["MOTEndTime"] - 100, 100, 3.3);
        p.AddLinearRamp("BottomTrappingCoilcurrent", (int)Parameters["MOTEndTime"] - 100, 100, 3.3);


        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);

        //Molasses shim currents
        p.AddAnalogValue("xcoilcurrent", (int)Parameters["MOTEndTime"] - 30, (double)Parameters["MolXShimCoilCurrent"]);
        p.AddAnalogValue("ycoilcurrent", (int)Parameters["MOTEndTime"] - 30, (double)Parameters["MolYShimCoilCurrent"]);
        p.AddAnalogValue("zcoilcurrent", (int)Parameters["MOTEndTime"] - 30, (double)Parameters["MolZShimCoilCurrent"]);


        //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);
    }
示例#3
0
    public override AnalogPatternBuilder GetAnalogPattern()
    {
        AnalogPatternBuilder p = new AnalogPatternBuilder((int)Parameters["PatternLength"]);

        MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters);

        int cMOTStartTime    = 4000;
        int cMOTEndTime      = cMOTStartTime + (int)Parameters["CMOTRampDuration"] + (int)Parameters["CMOTHoldTime"];
        int motSwitchOffTime = cMOTEndTime + 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");

        /////////////////FIELDS:


        // 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.AddLinearRamp("MOTCoilsCurrent", cMOTStartTime, (int)Parameters["CMOTRampDuration"], (double)Parameters["BFieldRampEndValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", cMOTEndTime, (double)Parameters["BFieldRampEndValue"]);
        //p.AddAnalogValue("MOTCoilsCurrent", cMOTEndTime, (double)Parameters["MOTCoilsCurrentValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", motSwitchOffTime, 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"]);


        ////////////////LIGHT:



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

        // v0 Intensity Ramp
        p.AddAnalogValue("v00Intensity", 0, (double)Parameters["v0IntensityRampStartValue"]);
        p.AddLinearRamp("v00Intensity", cMOTStartTime, (int)Parameters["CMOTRampDuration"], (double)Parameters["IntensityRampEndValue"]);
        //p.AddAnalogValue("v00Intensity", cMOTEndTime, (double)Parameters["v0IntensityRampStartValue"]);

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

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

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

        // Add Analog Channels
        p.AddChannel("slowingChirp");
        p.AddChannel("v0IntensityRamp");
        p.AddChannel("v0FrequencyRamp");
        p.AddChannel("MOTCoilsCurrent");

        // B Field
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTCoilsSwitchOn"], (double)Parameters["MOTCoilsCurrentRampStartValue"]);
        if ((bool)Parameters["MOTCoilsRampActive"])
        {
            p.AddLinearRamp("MOTCoilsCurrent", (int)Parameters["MOTCoilsCurrentRampStartTime"], (int)Parameters["MOTCoilsCurrentRampDuration"], (double)Parameters["MOTCoilsCurrentRampEndValue"]);
        }
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTCoilsSwitchOff"], 0);

        // Slowing Chirp
        p.AddAnalogValue("slowingChirp", 0, (double)Parameters["SlowingChirpStartValue"]);
        p.AddLinearRamp("slowingChirp", (int)Parameters["SlowingChirpStartTime"], (int)Parameters["SlowingChirpDuration"], (double)Parameters["SlowingChirpEndValue"]);
        p.AddLinearRamp("slowingChirp", (int)Parameters["SlowingChirpStartTime"] + (int)Parameters["SlowingChirpDuration"], (int)Parameters["SlowingChirpDuration"], (double)Parameters["SlowingChirpStartValue"]);

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

        // v0 Frequency Ramp
        p.AddAnalogValue("v0FrequencyRamp", 0, (double)Parameters["v0FrequencyRampStartValue"]);
        p.AddLinearRamp("v0FrequencyRamp", (int)Parameters["v0FrequencyRampStartTime"], (int)Parameters["v0FrequencyRampDuration"], (double)Parameters["v0FrequencyRampEndValue"]);

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

        MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters);

        int motSwitchOffTime                 = (int)Parameters["MOTLoadTime"] + (int)Parameters["v0IntensityRampDuration"] + (int)Parameters["MOTHoldTime"];
        int blueMolassesStartTime            = motSwitchOffTime + (int)Parameters["BlueMolassesStartDelay"];
        int fullIntensityBlueMolassesEndTime = blueMolassesStartTime + (int)Parameters["FullIntensityBlueMolassesDuration"];
        int blueMolassesEndTime              = fullIntensityBlueMolassesEndTime + (int)Parameters["v0IntensityMolassesRampDuration"];
        int cameraTrigger = blueMolassesEndTime + (int)Parameters["FreeExpansionTime"];

        // 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", motSwitchOffTime, -0.05); //switch off MOT coils for blue molasses

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

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

        // v0 Intensity Ramp
        p.AddAnalogValue("v00Intensity", 0, (double)Parameters["v0IntensityRampStartValue"]);
        p.AddLinearRamp("v00Intensity", (int)Parameters["MOTLoadTime"], (int)Parameters["v0IntensityRampDuration"], (double)Parameters["v0IntensityRampEndValue"]);
        p.AddAnalogValue("v00Intensity", blueMolassesStartTime, (double)Parameters["v0IntensityMolassesValue"]);
        p.AddLinearRamp("v00Intensity", fullIntensityBlueMolassesEndTime, (int)Parameters["v0IntensityMolassesRampDuration"], (double)Parameters["v0IntensityMolassesEndValue"]);
        //p.AddAnalogValue("v00Intensity", fullIntensityBlueMolassesEndTime + 50, 7.4);
        //p.AddAnalogValue("v00Intensity", fullIntensityBlueMolassesEndTime + 100, 7.83);
        //p.AddAnalogValue("v00Intensity", fullIntensityBlueMolassesEndTime + 150, 8.09);
        p.AddAnalogValue("v00Intensity", cameraTrigger, (double)Parameters["v0IntensityRampStartValue"]);

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

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

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

        MOTMasterScriptSnippet lm = new SHLoadMOT(p, Parameters);

        p.AddChannel("aom0frequency");
        p.AddChannel("aom1frequency");
        p.AddChannel("aom2frequency");
        p.AddChannel("aom3frequency");
        p.AddChannel("aom0amplitude");
        p.AddChannel("aom1amplitude");
        p.AddChannel("aom3amplitude");
        p.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, (double)Parameters["aom1Power"]);
        p.AddAnalogValue("aom3amplitude", 0, 6.0);
        p.AddAnalogValue("offsetlockfrequency", 0, (double)Parameters["offsetlockfrequency"]);

        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("aom1amplitude", (int)Parameters["CMOTEndTime"], (double)Parameters["D1RepumperPower"]); //set D1 repumper to correct value
        p.AddAnalogValue("aom1frequency", (int)Parameters["CMOTEndTime"], (double)Parameters["D1RepumperDetuning"]);
        p.AddAnalogValue("aom0frequency", (int)Parameters["CMOTEndTime"], (double)Parameters["D1PrincipalDetuning"]);

        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"] + (int)Parameters["D1Duration"] + 2, (double)Parameters["absImageRepumpPower"]);
        p.AddAnalogValue("aom1frequency", (int)Parameters["CMOTEndTime"] + (int)Parameters["D1Duration"] + 2, (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);
    }
示例#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");
        p.AddChannel("transferCoils");


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



        // Use for transport trap
        p.AddAnalogValue("transferCoils", 0, 0.0);
        p.AddLinearRamp("transferCoils", 10, 10000, 5.0);
        p.AddLinearRamp("transferCoils", 90010, 10000, 0.0);
        //p.AddAnalogValue("transferCoils", 0, 0.0);
        //p.AddAnalogValue("transferCoils", (int)Parameters["MOTCoilsSwitchOn"], (double)Parameters["MOTCoilsCurrentRampStartValue"]);
        //p.AddLinearRamp("transferCoils", (int)Parameters["MOTCoilsCurrentRampStartTime"], (int)Parameters["MOTCoilsCurrentRampDuration"], (double)Parameters["MOTCoilsCurrentRampEndValue"]);



        /*
         * // 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);
    }
示例#8
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);
    }
示例#9
0
    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["TopMagTrapCurrent"]);
        p.AddLinearRamp("BottomTrappingCoilcurrent", (int)Parameters["MOTEndTime"] - (int)Parameters["CMOTTime"] - (int)Parameters["CMOTHoldTime"], (int)Parameters["CMOTTime"], (double)Parameters["BottomMagTrapCurrent"]);
        p.AddLinearRamp("aom3amplitude", (int)Parameters["MOTEndTime"] - (int)Parameters["CMOTTime"] - (int)Parameters["CMOTHoldTime"], (int)Parameters["CMOTTime"], (double)Parameters["CMOTFinalPower"]);

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

        //magnetic trap
        p.AddAnalogValue("TopTrappingCoilcurrent", (int)Parameters["MOTEndTime"], (double)Parameters["TopMagTrapCurrent"]);
        p.AddAnalogValue("BottomTrappingCoilcurrent", (int)Parameters["MOTEndTime"], (double)Parameters["BottomMagTrapCurrent"]);

        p.AddAnalogValue("TopTrappingCoilcurrent", (int)Parameters["MOTEndTime"] + (int)Parameters["MagTrapHoldTime"], 0.0);
        p.AddAnalogValue("BottomTrappingCoilcurrent", (int)Parameters["MOTEndTime"] + (int)Parameters["MagTrapHoldTime"], 0.0);
        p.AddAnalogValue("xcoilcurrent", (int)Parameters["MOTEndTime"], (double)Parameters["MagXShimCoilCurrent"]);
        p.AddAnalogValue("ycoilcurrent", (int)Parameters["MOTEndTime"], (double)Parameters["MagYShimCoilCurrent"]);
        p.AddAnalogValue("zcoilcurrent", (int)Parameters["MOTEndTime"], (double)Parameters["MagZShimCoilCurrent"]);


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

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



        // Add Analog Channels

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

        p.AddChannel("slowingChirp");
        p.AddChannel("slowingCoilsCurrent");
        p.AddChannel("MOTCoilsCurrent");

        // Slowing Chirp
        p.AddAnalogValue("slowingChirp", 0, (double)Parameters["SlowingChirpStartValue"]);
        p.AddLinearRamp("slowingChirp", (int)Parameters["SlowingChirpStartTime"], (int)Parameters["SlowingChirpDuration"], (double)Parameters["SlowingChirpEndValue"]);
        p.AddLinearRamp("slowingChirp", (int)Parameters["SlowingChirpStartTime"] + (int)Parameters["SlowingChirpDuration"] + 200, (int)Parameters["SlowingChirpDuration"], (double)Parameters["SlowingChirpStartValue"]);

        // 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.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);

        return(p);
    }
示例#11
0
    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

        p.AddAnalogValue("offsetlockfrequency", 0, (double)Parameters["offsetlockvcofrequency"]);
        p.AddAnalogValue("D1EOMfrequency", 0, (double)Parameters["MolassesRepumpDetuning"]);
        p.AddAnalogValue("D1EOMamplitude", 0, (double)Parameters["MolassesRepumpAmplitude"]);
        p.AddAnalogValue("aom2frequency", 0, (double)Parameters["MolassesPrincipalFrequency"]);
        p.AddAnalogValue("aom2amplitude", 0, (double)Parameters["MolassesPrincipalAmplitude"]); //setting up the molasses parameters


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

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

        //Setting the probe aom amplitude for repumping
        p.AddAnalogValue("aom1amplitude", (int)Parameters["MOTEndTime"] + (int)Parameters["MolStartDelay"] + (int)Parameters["MolassesPulseLength"] - 2, (double)Parameters["PumpingPower"]);

        //Taking the pictures
        p.AddAnalogValue("D2EOMfrequency", (int)Parameters["MOTEndTime"] + (int)Parameters["MolStartDelay"] + (int)Parameters["MolassesPulseLength"] + (int)Parameters["ImageDelay"] - 3, (double)Parameters["absImageRepumpDetuning"]);
        p.AddAnalogValue("D2EOMamplitude", (int)Parameters["MOTEndTime"] + (int)Parameters["MolStartDelay"] + (int)Parameters["MolassesPulseLength"] + (int)Parameters["ImageDelay"] - 3, (double)Parameters["absImageRepumpAmplitude"]);
        p.AddAnalogValue("aom1frequency", (int)Parameters["MOTEndTime"] + (int)Parameters["MolStartDelay"] + (int)Parameters["MolassesPulseLength"] + (int)Parameters["ImageDelay"] - 1, (double)Parameters["absImageDetuning"]);
        p.AddAnalogValue("aom1amplitude", (int)Parameters["MOTEndTime"] + (int)Parameters["MolStartDelay"] + (int)Parameters["MolassesPulseLength"] + (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);
    }
示例#12
0
    public override AnalogPatternBuilder GetAnalogPattern()
    {
        AnalogPatternBuilder p = new AnalogPatternBuilder((int)Parameters["PatternLength"]);

        int patternStartBeforeQ = (int)Parameters["TCLBlockStart"] + (int)Parameters["RbMOTLoadTime"];

        // Add Analog Channels

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

        // Slowing Chirp
        p.AddAnalogValue("slowingChirp", 0, (double)Parameters["SlowingChirpStartValue"]);
        p.AddLinearRamp("slowingChirp", patternStartBeforeQ + (int)Parameters["SlowingChirpStartTime"], (int)Parameters["SlowingChirpDuration"], (double)Parameters["SlowingChirpEndValue"]);
        p.AddLinearRamp("slowingChirp", patternStartBeforeQ + (int)Parameters["SlowingChirpStartTime"] + (int)Parameters["SlowingChirpDuration"] + 200, (int)Parameters["SlowingChirpDuration"], (double)Parameters["SlowingChirpStartValue"]);

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

        // B Field
        p.AddAnalogValue("MOTCoilsCurrent", 0, (double)Parameters["MOTCoilsCurrentRbLoadValue"]);
        p.AddLinearRamp("MOTCoilsCurrent", patternStartBeforeQ - (int)Parameters["MOTCoilsCurrentRampDuration"], (int)Parameters["MOTCoilsCurrentRampDuration"], (double)Parameters["MOTCoilsCurrentCaFLoadValue"]);
        p.AddLinearRamp("MOTCoilsCurrent", patternStartBeforeQ + (int)Parameters["BgCameraTrigger"] + 1000, (int)Parameters["MOTCoilsCurrentRampDuration"], (double)Parameters["MOTCoilsCurrentCompressValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", patternStartBeforeQ + (int)Parameters["MOTCoilsSwitchOff"], (double)Parameters["MOTCoilsCurrentRbLoadValue"]);

        // 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", patternStartBeforeQ + (int)Parameters["BgCameraTrigger"] + 1000, (int)Parameters["v0IntensityRampDuration"], (double)Parameters["v0IntensityRampEndValue"]);
        p.AddAnalogValue("v00Intensity", patternStartBeforeQ + (int)Parameters["BgCameraTrigger"] + (int)Parameters["MeasCameraTriggerDelay"], (double)Parameters["v0IntensityRampStartValue"]);

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

        return(p);
    }
示例#13
0
        public void AddAnalogSnippet(AnalogPatternBuilder p, Dictionary <String, Object> parameters)
        {
            p.AddChannel("slowingChirp");
            p.AddChannel("slowingCoilsCurrent");
            p.AddChannel("MOTCoilsCurrent");

            // Slowing Chirp
            p.AddAnalogValue("slowingChirp", 0, (double)parameters["SlowingChirpStartValue"]);
            p.AddLinearRamp("slowingChirp", (int)parameters["SlowingChirpStartTime"], (int)parameters["SlowingChirpDuration"], (double)parameters["SlowingChirpEndValue"]);
            p.AddLinearRamp("slowingChirp", (int)parameters["SlowingChirpStartTime"] + (int)parameters["SlowingChirpDuration"] + 200, (int)parameters["SlowingChirpDuration"], (double)parameters["SlowingChirpStartValue"]);
        }
示例#14
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("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);
    }
    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["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["v0IntensityRampStartValue"]);
        p.AddLinearRamp("v0IntensityRamp", (int)Parameters["v0IntensityRampStartTime"], (int)Parameters["v0IntensityRampDuration"], (double)Parameters["v0IntensityRampEndValue"]);
        p.AddAnalogValue("v0IntensityRamp", (int)Parameters["Frame0Trigger"], (double)Parameters["v0IntensityRampStartValue"]);

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


        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.AddChannel("offsetlockfrequency");

        p.AddAnalogValue("coil0current", 0, 0);
        p.AddAnalogValue("coil1current", 0, 0);
        p.AddAnalogValue("aom3amplitude", 0, 5.3);
        p.AddAnalogValue("aom3frequency", 0, 198);
        p.AddLinearRamp("aom3frequency", 10000, 10, 203);

        //p.AddAnalogValue("coil0current", 30000, 1.6);
        //p.AddAnalogValue("coil1current", 30000, 2.1);
        //p.AddLinearRamp("coil0current", 30000,4, 0);//bottom coil
        //p.AddLinearRamp("coil1current", 30001,3, 1.7);//top coil
        //p.AddLinearRamp("coil0current", 30007, 11, 0);//bottom coil
        //p.AddLinearRamp("coil1current", 30008, 10, 0);
        p.SwitchAllOffAtEndOfPattern();
        return(p);
    }
示例#17
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);
    }
示例#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("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);

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

        // 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"]);

        // v0 Molasses
        p.AddAnalogValue("v0IntensityRamp", (int)Parameters["MOTSwitchOffTime"] + (int)Parameters["MolassesWaitTime"], (double)Parameters["v0IntensityMolassesRampStartValue"]);
        p.AddLinearRamp("v0IntensityRamp", (int)Parameters["v0IntensityMolassesRampStartTime"], (int)Parameters["v0IntensityMolassesRampDuration"], (double)Parameters["v0IntensityMolassesRampEndValue"]);

        // v0 Imaging
        p.AddAnalogValue("v0IntensityRamp", (int)Parameters["MOTSwitchOffTime"] + (int)Parameters["MolassesWaitTime"] + (int)Parameters["MolassesDuration"] + (int)Parameters["ExpansionTime"], (double)Parameters["v0IntensityRampStartValue"]); //jump intensity back to 100% 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", (int)Parameters["MOTSwitchOffTime"] + (int)Parameters["MolassesWaitTime"], ((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["MolassesWaitTime"] + (int)Parameters["MolassesDuration"] + (int)Parameters["ExpansionTime"], ((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);
    }
示例#19
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);
    }
示例#20
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 opticalPumpingStartTime = molassesStartTime + (int)Parameters["MolassesDuration"];
        int magTrapStartTime        = opticalPumpingStartTime + (int)Parameters["OpticalPumpingDuration"];
        int motRecaptureTime        = magTrapStartTime + (int)Parameters["MagTrapDuration"];
        int imageTime = motRecaptureTime + (int)Parameters["MOTWaitBeforeImage"];

        // 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.AddLinearRamp("MOTCoilsCurrent", motCompressStartTime, (int)Parameters["MOTCoilsCurrentRampDuration"], (double)Parameters["MOTCoilsCurrentRampEndValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", molassesStartTime, 0.0);
        p.AddAnalogValue("MOTCoilsCurrent", magTrapStartTime, (double)Parameters["MOTCoilsCurrentMagTrapValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", motRecaptureTime, (double)Parameters["MOTCoilsCurrentValue"]);
        p.AddAnalogValue("MOTCoilsCurrent", imageTime + 2000, 0.0); // Turn off MOT coils at the end of the sequence

        // 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.AddLinearRamp("rbCoolingIntensity", motCompressStartTime, (int)Parameters["rbCoolingMOTIntensityRampDuration"], (double)Parameters["rbCoolingMOTIntensityRampEndValue"]);
        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", motRecaptureTime, (double)Parameters["rbCoolingMOTIntensity"]);

        return(p);
    }
        public void AddAnalogSnippet(AnalogPatternBuilder p, Dictionary <String, Object> parameters)
        {
            int patternStartBeforeQ      = (int)parameters["TCLBlockStart"];
            int slowingChirpStartTime    = patternStartBeforeQ + (int)parameters["SlowingChirpStartTime"];
            int slowingNewDetuningTime   = slowingChirpStartTime + (int)parameters["SlowingChirpDuration"];
            int slowingChirpBackTime     = slowingNewDetuningTime + (int)parameters["SlowingChirpHoldDuration"];
            int slowingChirpFinishedTime = slowingChirpBackTime + (int)parameters["SlowingChirpDuration"];

            p.AddChannel("slowingChirp");
            p.AddChannel("slowingCoilsCurrent");
            p.AddChannel("MOTCoilsCurrent");

            // Slowing Chirp
            p.AddAnalogValue("slowingChirp", 0, (double)parameters["SlowingChirpStartValue"]);
            p.AddLinearRamp("slowingChirp", slowingChirpStartTime, (int)parameters["SlowingChirpDuration"], (double)parameters["SlowingChirpEndValue"]);
            p.AddLinearRamp("slowingChirp", slowingNewDetuningTime, 200, (double)parameters["PokeDetuningValue"]);
            p.AddLinearRamp("slowingChirp", slowingChirpBackTime, (int)parameters["SlowingChirpDuration"], (double)parameters["SlowingChirpStartValue"]);
        }
示例#22
0
    public override AnalogPatternBuilder GetAnalogPattern()
    {
        AnalogPatternBuilder p = new AnalogPatternBuilder((int)Parameters["PatternLength"]);

        int motLoadingEndTime = 5000;
        int motSwitchOffTime  = motLoadingEndTime + (int)Parameters["v0IntensityRampDuration"];
        int cameraTriggerTime = motSwitchOffTime + (int)Parameters["FreeExpansionTime"];

        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", motSwitchOffTime, -0.1); //Switch off MOT coils to let cloud expand



        // 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"]);
        p.AddLinearRamp("v00Intensity", motLoadingEndTime, (int)Parameters["v0IntensityRampDuration"], (double)Parameters["v0IntensityEndValue"]);
        p.AddAnalogValue("v00Intensity", motSwitchOffTime, (double)Parameters["v0IntensityRampStartValue"]);

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

        //v0 chirp
        p.AddAnalogValue("v00Chirp", 0, 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.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);
    }
示例#24
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");

        // 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["MOTCoilsSwitchOff"], 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["MOTCoilsSwitchOff"], 0.0);

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

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

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

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



        p.SwitchAllOffAtEndOfPattern();
        return(p);
    }
示例#25
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);
    }
示例#26
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);
    }
示例#27
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);
    }
    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) - top coil is in digital section
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTCoilsSwitchOn"], (double)Parameters["MOTCoilsCurrentRampStartValue"]);
        // Turn off single MOT coil for Poke
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["PokeStartTime"] - (int)Parameters["PrePokeTime"], 0);
        p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["PokeStartTime"] + (int)Parameters["PokeDuration"], (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["OscillationTime"], (double)Parameters["v0IntensityRampStartValue"]);


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



        p.SwitchAllOffAtEndOfPattern();
        return(p);
    }
示例#29
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);
    }
示例#30
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("v00EOMAmp");
        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["MOTSwitchOffTime"], 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"] + 100, (double)Parameters["v0IntensityMolassesValue"]);
        //(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", (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"] + 100 + (int)Parameters["MolassesDuration"] + (int)Parameters["ExpansionTime"], ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyStartValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]); //jump aom frequency back to normal for imaging

        return(p);
    }