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); }
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); }
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); }
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); }
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); }
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); }
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); }
public override AnalogPatternBuilder GetAnalogPattern() { AnalogPatternBuilder p = new AnalogPatternBuilder((int)Parameters["PatternLength"]); MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters); // Add Analog Channels p.AddChannel("v0IntensityRamp"); p.AddChannel("v0FrequencyRamp"); // B Field // For the delta electronica box (bottom MOT coil) - top coil is in digital section p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTCoilsSwitchOn"], (double)Parameters["MOTCoilsCurrentRampStartValue"]); p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTCoilsSwitchOff"], 0); // v0 Intensity Ramp p.AddAnalogValue("v0IntensityRamp", 0, (double)Parameters["v0IntensityRampStartValue"]); p.AddLinearRamp("v0IntensityRamp", (int)Parameters["v0IntensityRampStartTime"], (int)Parameters["v0IntensityRampDuration"], (double)Parameters["v0IntensityRampEndValue"]); //ramp extension below // p.AddLinearRamp("v0IntensityRamp", (int)Parameters["v0IntensityRampStartTime"] + (int)Parameters["v0IntensityRampDuration"]+1, (int)Parameters["v0IntensityRampDuration2"], (double)Parameters["v0IntensityRampEndValue2"]); p.AddAnalogValue("v0IntensityRamp", (int)Parameters["MOTSwitchOffTime"], (double)Parameters["v0IntensityRampStartValue"]); //(int)Parameters["MOTAOMStartTime"] // v0 Frequency Ramp //p.AddAnalogValue("v0FrequencyRamp", 0, (double)Parameters["v0FrequencyRampStartValue"]); //p.AddAnalogValue("v0FrequencyRamp", (int)Parameters["MOTSwitchOffTime"], (double)Parameters["v0FrequencyRampEndValue"]); //jump aom frequency back to normal for imaging // v0 Frequency Ramp p.AddAnalogValue("v0FrequencyRamp", 0, ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyStartValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]); p.AddAnalogValue("v0FrequencyRamp", 4800, ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyNewValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]); p.AddAnalogValue("v0FrequencyRamp", (int)Parameters["MOTSwitchOffTime"], ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyStartValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]); //jump aom frequency back to normal for imaging p.SwitchAllOffAtEndOfPattern(); return(p); }
public override AnalogPatternBuilder GetAnalogPattern() { AnalogPatternBuilder p = new AnalogPatternBuilder((int)Parameters["PatternLength"]); MOTMasterScriptSnippet lm = new 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); }
public override AnalogPatternBuilder GetAnalogPattern() { AnalogPatternBuilder p = new AnalogPatternBuilder((int)Parameters["PatternLength"]); MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters); p.AddChannel("v0FrequencyRamp"); p.AddAnalogValue( "v0FrequencyRamp", 0, 0 ); int timeStep = 1000; int cumalativeTime = 10000; while (cumalativeTime < 40000) { p.AddAnalogValue( "v0FrequencyRamp", cumalativeTime + timeStep, 7.17 ); p.AddAnalogValue( "v0FrequencyRamp", cumalativeTime + 3 * timeStep, 0 ); cumalativeTime += (4 * timeStep); } p.SwitchAllOffAtEndOfPattern(); return(p); }
public override AnalogPatternBuilder GetAnalogPattern() { AnalogPatternBuilder p = new AnalogPatternBuilder((int)Parameters["PatternLength"]); MOTMasterScriptSnippet lm = new 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); }
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); }
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); }
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); }
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); }