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); // B Field p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTCoilsSwitchOn"], (double)Parameters["MOTCoilsCurrentValue"]); //p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["Frame0Trigger"], 0.0); //p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["Frame0Trigger"]-50, 0.0); p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTCoilsSwitchOff"], 0.0); // Shim Fields p.AddAnalogValue("xShimCoilCurrent", 0, (double)Parameters["xShimLoadCurrent"]); p.AddAnalogValue("yShimCoilCurrent", 0, (double)Parameters["yShimLoadCurrent"]); p.AddAnalogValue("zShimCoilCurrent", 0, (double)Parameters["zShimLoadCurrent"]); // trigger delay // p.AddAnalogValue("triggerDelay", 0, (double)Parameters["triggerDelay"]); // F=0 p.AddAnalogValue("v00EOMAmp", 0, 4.1); //4.7 // v0 Intensity Ramp p.AddAnalogValue("v00Intensity", 0, (double)Parameters["v0IntensityRampStartValue"]); // v0 Frequency Ramp p.AddAnalogValue("v00Frequency", 0, (double)Parameters["v0FrequencyStartValue"]); //p.AddAnalogValue("v00Frequency", 4000, 9.0); //v0 chirp p.AddAnalogValue("v00Chirp", 0, 0.0); //p.AddAnalogValue("transferCoils", 0, 1.0); //p.AddAnalogValue("MOTCoilsCurrent", 0, (double)Parameters["Dummy"]); return(p); }
public override PatternBuilder32 GetDigitalPattern() { PatternBuilder32 p = new PatternBuilder32(); int patternStartBeforeQ = (int)Parameters["TCLBlockStart"]; int molassesStartTime = (int)Parameters["MOTSwitchOffTime"] + (int)Parameters["MolassesDelay"]; int molassesRampTime = molassesStartTime + (int)Parameters["MolassesHoldTime"]; int v00ChirpTime = molassesRampTime + (int)Parameters["MolassesRampDuration"]; int singleFrequencyMolassesTime = v00ChirpTime + (int)Parameters["v00ChirpDuration"] + (int)Parameters["v00ChirpWait"]; int releaseTime = singleFrequencyMolassesTime + (int)Parameters["SingleFreqMolassesDuration"]; int cameraTriggerTime = releaseTime + (int)Parameters["ExpansionTime"]; MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters); // This is how you load "preset" patterns. p.Pulse(patternStartBeforeQ, (int)Parameters["MOTSwitchOffTime"], (int)Parameters["MolassesDelay"], "v00MOTAOM"); //pulse off the MOT light whilst MOT fields are turning off p.Pulse(patternStartBeforeQ, v00ChirpTime, (int)Parameters["v00ChirpDuration"] + (int)Parameters["v00ChirpWait"], "v00MOTAOM"); p.Pulse(patternStartBeforeQ, (int)Parameters["MOTSwitchOffTime"] - 1400, cameraTriggerTime - (int)Parameters["MOTSwitchOffTime"] + 3000, "bXSlowingShutter"); //Takes 14ms to start closing p.Pulse(patternStartBeforeQ, releaseTime, (int)Parameters["ExpansionTime"], "v00MOTAOM"); //pulse off the MOT light to release the cloud p.Pulse(patternStartBeforeQ, v00ChirpTime, (int)Parameters["v00ChirpDuration"] + (int)Parameters["v00ChirpWait"] + (int)Parameters["SingleFreqMolassesDuration"], "v00Sidebands"); p.Pulse(patternStartBeforeQ, v00ChirpTime, 2 * (int)Parameters["v00ChirpDuration"] + (int)Parameters["v00ChirpWait"] + (int)Parameters["SingleFreqMolassesDuration"] + 200, "v00LockBlock"); p.Pulse(patternStartBeforeQ, releaseTime - 1500, (int)Parameters["ExpansionTime"] + 1500 - 1250, "v00MOTShutter"); p.AddEdge("topCoilDirection", patternStartBeforeQ + molassesStartTime, true); p.AddEdge("topCoilDirection", patternStartBeforeQ + (int)Parameters["CoilsSwitchOffTime"] + 1000, false); p.AddEdge("bottomCoilDirection", patternStartBeforeQ + molassesStartTime, true); p.AddEdge("bottomCoilDirection", patternStartBeforeQ + (int)Parameters["CoilsSwitchOffTime"] + 1000, false); // p.Pulse(patternStartBeforeQ, 4000, (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); //camera trigger for first frame p.Pulse(patternStartBeforeQ, cameraTriggerTime, (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); //camera trigger for first frame return(p); }
public override PatternBuilder32 GetDigitalPattern() { PatternBuilder32 p = new PatternBuilder32(); int patternStartBeforeQ = (int)Parameters["TCLBlockStart"]; int molassesStartTime = (int)Parameters["MOTSwitchOffTime"] + (int)Parameters["MolassesDelay"]; int molassesRampTime = molassesStartTime + (int)Parameters["MolassesHoldTime"]; int v0F0PumpStartTime = molassesRampTime + (int)Parameters["MolassesRampDuration"]; int microwavePulseTime = v0F0PumpStartTime + (int)Parameters["v0F0PumpDuration"] + 80;// 70 //int microwavePulseTimeTwo = microwavePulseTime + (int)Parameters["MicrowavePulseDuration"]; int motRecaptureTime = microwavePulseTime + (int)Parameters["MicrowavePulseDuration"] + (int)Parameters["WaitBeforeRecapture"]; int imageTime = motRecaptureTime + (int)Parameters["MOTWaitBeforeImage"]; MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters); // This is how you load "preset" patterns. p.Pulse(patternStartBeforeQ, microwavePulseTime, (int)Parameters["MicrowavePulseDuration"], "microwaveB"); //p.Pulse(patternStartBeforeQ, microwavePulseTimeTwo, (int)Parameters["MicrowavePulseDuration"], "microwaveA"); //extra p.Pulse(patternStartBeforeQ, (int)Parameters["MOTSwitchOffTime"], (int)Parameters["MolassesDelay"], "v00MOTAOM"); // pulse off the MOT light whilst MOT fields are turning off p.Pulse(patternStartBeforeQ, microwavePulseTime, (int)Parameters["MicrowavePulseDuration"], "v00MOTAOM"); // turn off the MOT light for microwave pulse //p.Pulse(patternStartBeforeQ, microwavePulseTime - 100, motRecaptureTime - microwavePulseTime, "bottomCoilDirection"); //p.Pulse(patternStartBeforeQ, (int)Parameters["MOTPictureTriggerTime"], (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); // camera trigger for picture of initial MOT p.Pulse(patternStartBeforeQ, imageTime, (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); // camera trigger return(p); }
public override PatternBuilder32 GetDigitalPattern() { PatternBuilder32 p = new PatternBuilder32(); MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters); // This is how you load "preset" patterns. /* * int patternStartBeforeQ = (int)Parameters["TCLBlockStart"]; * 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"]; * * * p.Pulse(patternStartBeforeQ, (int)Parameters["MOTSwitchOffTime"], (int)Parameters["MolassesDelay"], "v00MOTAOM"); // pulse off the MOT light whilst MOT fields are turning off * p.Pulse(patternStartBeforeQ, magTrapStartTime, imageTime - magTrapStartTime, "v00MOTAOM"); // turn off the MOT light for magnetic trap * //p.Pulse(patternStartBeforeQ, 1, 35000, "bXSlowingShutter"); // Close BX shutter during magnetic trap (note it takes at least 30ms to do anything so turning off at 1 is fine) * p.Pulse(patternStartBeforeQ, imageTime, (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); // camera trigger * * * p.Pulse(patternStartBeforeQ, magTrapStartTime - 1690, magTrapEndTime - 1200, "bXSlowingShutter"); * p.Pulse(patternStartBeforeQ, magTrapStartTime - 2060, magTrapEndTime - 990, "v00MOTShutter"); */ 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"]); // v0 Frequency Ramp p.AddAnalogValue("v0FrequencyRamp", 0, (double)Parameters["v0FrequencyRampStartValue"]); p.AddAnalogValue("v0FrequencyRamp", (int)Parameters["v0FrequencyRampStartTime"], (double)Parameters["v0FrequencyRampEndValue"]); p.SwitchAllOffAtEndOfPattern(); return(p); }
public override AnalogPatternBuilder GetAnalogPattern() { AnalogPatternBuilder p = new AnalogPatternBuilder((int)Parameters["PatternLength"]); MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters); int patternStartBeforeQ = (int)Parameters["TCLBlockStart"]; int blueMOTSwitchTime = (int)Parameters["BlueMOTSwitchTime"]; int currentDirectionSwitchTime = blueMOTSwitchTime + (int)Parameters["BlueMOTSwitchDelay"]; int motCoilsSwitchOffTime = (int)Parameters["MOTCoilsSwitchOff"]; int currentDirectionSwitchBackTime = motCoilsSwitchOffTime + (int)Parameters["BlueMOTSwitchDelay"]; // Add Analog Channels p.AddChannel("v00Intensity"); p.AddChannel("v00Frequency"); p.AddChannel("xShimCoilCurrent"); p.AddChannel("yShimCoilCurrent"); p.AddChannel("zShimCoilCurrent"); p.AddChannel("v00EOMAmp"); // Slowing field p.AddAnalogValue("slowingCoilsCurrent", 0, (double)Parameters["slowingCoilsValue"]); p.AddAnalogValue("slowingCoilsCurrent", (int)Parameters["slowingCoilsOffTime"], 0.0); // B Field p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTCoilsSwitchOn"], (double)Parameters["MOTCoilsCurrentValue"]); p.AddAnalogPulse("MOTCoilsCurrent", currentDirectionSwitchTime, (int)Parameters["BlueMOTSwitchDuration"], 0.0, (double)Parameters["MOTCoilsBlueMOTCurrentValue"]); p.AddAnalogValue("MOTCoilsCurrent", motCoilsSwitchOffTime, 0.0); // Shim Fields p.AddAnalogValue("xShimCoilCurrent", 0, (double)Parameters["xShimLoadCurrent"]); p.AddAnalogValue("yShimCoilCurrent", 0, (double)Parameters["yShimLoadCurrent"]); p.AddAnalogValue("zShimCoilCurrent", 0, (double)Parameters["zShimLoadCurrent"]); // trigger delay // p.AddAnalogValue("triggerDelay", 0, (double)Parameters["triggerDelay"]); // F=0 p.AddAnalogValue("v00EOMAmp", 0, 5.7); // v0 Intensity Ramp p.AddAnalogValue("v00Intensity", 0, (double)Parameters["v0IntensityRampStartValue"]); p.AddLinearRamp("v00Intensity", (int)Parameters["v0IntensityRampStartTime"], (int)Parameters["v0IntensityRampDuration"], (double)Parameters["v0IntensityRampEndValue"]); p.AddAnalogValue("v00Intensity", blueMOTSwitchTime, (double)Parameters["v0IntensityRampStartValue"]); // v0 Frequency Ramp p.AddAnalogValue( "v00Frequency", 0, ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyMOTValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"] ); p.AddAnalogValue( "v00Frequency", blueMOTSwitchTime, ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyBlueMOTValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"] ); return(p); }
public override AnalogPatternBuilder GetAnalogPattern() { AnalogPatternBuilder p = new AnalogPatternBuilder((int)Parameters["PatternLength"]); MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters); // Add Analog Channels p.AddChannel("v0IntensityRamp"); p.AddChannel("v0FrequencyRamp"); 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); }
public override PatternBuilder32 GetDigitalPattern() { PatternBuilder32 p = new PatternBuilder32(); int patternStartBeforeQ = (int)Parameters["TCLBlockStart"]; int molassesStartTime = (int)Parameters["MOTSwitchOffTime"] + (int)Parameters["MolassesDelay"]; int molassesRampTime = molassesStartTime + (int)Parameters["MolassesHoldTime"]; int v0F0PumpStartTime = molassesRampTime + (int)Parameters["MolassesRampDuration"]; int v00ChirpTime = v0F0PumpStartTime + (int)Parameters["v0F0PumpDuration"]; int singleFrequencyMolassesTime = v00ChirpTime + (int)Parameters["v00ChirpDuration"] + (int)Parameters["v00ChirpWait"]; int releaseTime = singleFrequencyMolassesTime + (int)Parameters["SingleFreqMolassesDuration"]; int motRecaptureTime = releaseTime + (int)Parameters["ExpansionTime"]; int cameraTriggerTime = motRecaptureTime + (int)Parameters["WaitBeforeImage"]; MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters); // This is how you load "preset" patterns. p.Pulse(patternStartBeforeQ, (int)Parameters["MOTSwitchOffTime"], (int)Parameters["MolassesDelay"], "v00MOTAOM"); //pulse off the MOT light whilst MOT fields are turning off p.Pulse(patternStartBeforeQ, v00ChirpTime, motRecaptureTime - v00ChirpTime, "v00MOTAOM"); p.Pulse(patternStartBeforeQ, singleFrequencyMolassesTime + 400, (int)Parameters["MicrowavePulseDuration"], "microwaveA"); p.Pulse(patternStartBeforeQ, (int)Parameters["MOTSwitchOffTime"] - 1400, cameraTriggerTime - (int)Parameters["MOTSwitchOffTime"] + 3000, "bXSlowingShutter"); //Takes 14ms to start closing // p.Pulse(patternStartBeforeQ, v00ChirpTime, (int)Parameters["v00ChirpDuration"] + (int)Parameters["v00ChirpWait"] + (int)Parameters["SingleFreqMolassesDuration"], "v00Sidebands"); p.Pulse(patternStartBeforeQ, v00ChirpTime, 2 * (int)Parameters["v00ChirpDuration"] + (int)Parameters["v00ChirpWait"] + (int)Parameters["SingleFreqMolassesDuration"] + 200, "v00LockBlock"); p.Pulse(patternStartBeforeQ, (int)Parameters["MOTPictureTriggerTime"], (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); // camera trigger for picture of initial MOT p.Pulse(patternStartBeforeQ, cameraTriggerTime, (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); //camera trigger for first frame 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 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 PatternBuilder32 GetDigitalPattern() { PatternBuilder32 p = new PatternBuilder32(); int patternStartBeforeQ = (int)Parameters["TCLBlockStart"]; int molassesStartTime = (int)Parameters["MOTSwitchOffTime"] + (int)Parameters["MolassesDelay"]; int molassesRampTime = molassesStartTime + (int)Parameters["MolassesHoldTime"]; int v00ChirpTime = molassesRampTime + (int)Parameters["MolassesRampDuration"]; int singleFrequencyMolassesTime = v00ChirpTime + (int)Parameters["v00ChirpDuration"] + (int)Parameters["v00ChirpWait"]; int harmonicTrapOnTime = singleFrequencyMolassesTime + (int)Parameters["SingleFreqMolassesDuration"]; int harmonicTrapOffTime = harmonicTrapOnTime + (int)Parameters["RotationTime"]; int singleFrequencyMolassesTimeTwo = harmonicTrapOffTime + (int)Parameters["FieldDecayTime"]; int releaseTime = singleFrequencyMolassesTimeTwo + (int)Parameters["SingleFreqMolassesTwoDuration"]; int recaptureTime = releaseTime + (int)Parameters["v00ChirpDuration"] + (int)Parameters["v00ChirpWait"] + (int)Parameters["WaitBeforeMOT"]; int cameraTriggerTime = recaptureTime + (int)Parameters["WaitBeforeImage"]; MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters); // This is how you load "preset" patterns. p.Pulse(patternStartBeforeQ, (int)Parameters["MOTSwitchOffTime"], (int)Parameters["MolassesDelay"], "v00MOTAOM"); //pulse off the MOT light whilst MOT fields are turning off p.Pulse(patternStartBeforeQ, v00ChirpTime, (int)Parameters["v00ChirpDuration"] + (int)Parameters["v00ChirpWait"], "v00MOTAOM"); //pulse MOT light off during frequency chirp p.Pulse(patternStartBeforeQ, (int)Parameters["MOTSwitchOffTime"] - 1400, cameraTriggerTime - (int)Parameters["MOTSwitchOffTime"] + 3000, "bXSlowingShutter"); //Takes 14ms to start closing p.Pulse(patternStartBeforeQ, harmonicTrapOnTime, singleFrequencyMolassesTimeTwo - harmonicTrapOnTime, "v00MOTAOM"); //pulse off the MOT light during harmonic trap p.Pulse(patternStartBeforeQ, releaseTime, recaptureTime - releaseTime, "v00MOTAOM"); //pulse off the MOT light during free expansion p.Pulse(patternStartBeforeQ, v00ChirpTime, (int)Parameters["v00ChirpDuration"] + (int)Parameters["v00ChirpWait"] + (int)Parameters["SingleFreqMolassesDuration"], "v00Sidebands"); //sidebands off for single freq molasses p.Pulse(patternStartBeforeQ, v00ChirpTime, releaseTime + (int)Parameters["v00ChirpDuration"] - v00ChirpTime, "v00LockBlock"); //tcl blocked during single freq molasses p.Pulse(patternStartBeforeQ, singleFrequencyMolassesTimeTwo, releaseTime - singleFrequencyMolassesTimeTwo, "v00Sidebands"); //sidebands off for single freq molasses 2 p.Pulse(patternStartBeforeQ, molassesStartTime, harmonicTrapOffTime + 20 - molassesStartTime, "bottomCoilDirection"); p.Pulse(patternStartBeforeQ, harmonicTrapOffTime + 20, releaseTime - (harmonicTrapOffTime + 20), "topCoilDirection"); p.Pulse(patternStartBeforeQ, 4000, (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); //camera trigger for first frame p.Pulse(patternStartBeforeQ, cameraTriggerTime, (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); //camera trigger for first frame return(p); }
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); }
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); }
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 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); }
public override AnalogPatternBuilder GetAnalogPattern() { AnalogPatternBuilder p = new AnalogPatternBuilder((int)Parameters["PatternLength"]); MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters); int molassesStartTime = (int)Parameters["MOTSwitchOffTime"] + (int)Parameters["MolassesDelay"]; int molassesRampTime = molassesStartTime + (int)Parameters["MolassesHoldTime"]; int releaseTime = molassesRampTime + (int)Parameters["MolassesRampDuration"]; int imagingLightOnTime = releaseTime + (int)Parameters["ExpansionTime"]; int cameraTriggerTime = imagingLightOnTime + (int)Parameters["WaitBeforeImage"]; // Add Analog Channels p.AddChannel("v00Intensity"); p.AddChannel("v00Frequency"); p.AddChannel("xShimCoilCurrent"); p.AddChannel("yShimCoilCurrent"); p.AddChannel("zShimCoilCurrent"); p.AddChannel("v00EOMAmp"); // Slowing field p.AddAnalogValue("slowingCoilsCurrent", 0, (double)Parameters["slowingCoilsValue"]); p.AddAnalogValue("slowingCoilsCurrent", (int)Parameters["slowingCoilsOffTime"], 0.0); // B Field p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTCoilsSwitchOn"], (double)Parameters["MOTCoilsCurrentRampStartValue"]); p.AddLinearRamp("MOTCoilsCurrent", (int)Parameters["MOTCoilsCurrentRampStartTime"], (int)Parameters["MOTCoilsCurrentRampDuration"], (double)Parameters["MOTCoilsCurrentRampEndValue"]); p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["MOTSwitchOffTime"], (double)Parameters["MOTCoilsCurrentMolassesValue"]); //p.AddAnalogValue("MOTCoilsCurrent", imagingLightOnTime, (double)Parameters["MOTCoilsCurrentRampStartValue"]); p.AddAnalogValue("MOTCoilsCurrent", (int)Parameters["CoilsSwitchOffTime"], 0.0); // Shim Fields p.AddAnalogValue("xShimCoilCurrent", 0, (double)Parameters["xShimLoadCurrent"]); p.AddAnalogValue("yShimCoilCurrent", 0, (double)Parameters["yShimLoadCurrent"]); p.AddAnalogValue("zShimCoilCurrent", 0, (double)Parameters["zShimLoadCurrent"]); // v0 Intensity Ramp p.AddAnalogValue("v00Intensity", 0, (double)Parameters["v0IntensityRampStartValue"]); p.AddLinearRamp("v00Intensity", (int)Parameters["v0IntensityRampStartTime"], (int)Parameters["v0IntensityRampDuration"], (double)Parameters["v0IntensityRampEndValue"]); p.AddAnalogValue("v00Intensity", molassesStartTime, (double)Parameters["v0IntensityMolassesValue"]); p.AddAnalogValue("v00Intensity", molassesRampTime + 50, 7.4); p.AddAnalogValue("v00Intensity", molassesRampTime + 100, 7.83); p.AddAnalogValue("v00Intensity", molassesRampTime + 150, 8.09); p.AddAnalogValue("v00Intensity", cameraTriggerTime, (double)Parameters["v0IntensityRampStartValue"]); // F=0 p.AddAnalogValue("v00EOMAmp", 0, 4.7); // v0 Frequency Ramp p.AddAnalogValue("v00Frequency", 0, ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyStartValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]); p.AddAnalogValue("v00Frequency", (int)Parameters["MOTSwitchOffTime"], ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyNewValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]); //jump to blue detuning p.AddAnalogValue("v00Frequency", cameraTriggerTime, ((double)Parameters["lockAomFrequency"] - (double)Parameters["v0FrequencyStartValue"] / 2 - (double)Parameters["calibOffset"]) / (double)Parameters["calibGradient"]); //jump aom frequency back to normal for imaging return(p); }
public override PatternBuilder32 GetDigitalPattern() { PatternBuilder32 p = new PatternBuilder32(); int patternStartBeforeQ = (int)Parameters["TCLBlockStart"]; MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters); // This is how you load "preset" patterns. return(p); }
public override PatternBuilder32 GetDigitalPattern() { PatternBuilder32 p = new PatternBuilder32(); int patternStartBeforeQ = (int)Parameters["TCLBlockStart"]; int rbMOTLoadTime = (int)Parameters["TCLBlockStart"] + (int)Parameters["MOTLoadTime"]; int rbFirstFieldJump = rbMOTLoadTime + (int)Parameters["RbMOTHoldTime"]; int rbCMOTStartTime = rbFirstFieldJump + (int)Parameters["RbFirstCMOTHoldTime"]; int rbMOTswitchOffTime = rbCMOTStartTime + (int)Parameters["CMOTRampDuration"] + (int)Parameters["RbCMOTHoldTime"]; int rBMolassesStartTime = rbMOTswitchOffTime + (int)Parameters["RbMolassesDelay"]; int rBMolassesEndTime = rBMolassesStartTime + (int)Parameters["RbMolassesDuration"]; int cameraTrigger1 = rBMolassesEndTime + (int)Parameters["WaitBeforeImage"] + (int)Parameters["FreeExpansionTime"]; int cameraTrigger2 = cameraTrigger1 + (int)Parameters["CameraTriggerDelayAfterFirstImage"]; //probe image int cameraTrigger3 = cameraTrigger2 + (int)Parameters["CameraTriggerDelayAfterFirstImage"]; //bg MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters); // This is how you load "preset" patterns. // p.AddEdge("v00Shutter", 0, true); //p.Pulse(patternStartBeforeQ, 3000 - 1400, 10000, "bXSlowingShutter"); //Takes 14ms to start closing //p.Pulse(patternStartBeforeQ, (int)Parameters["Frame0Trigger"], (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); //camera trigger for first frame //Rb: p.AddEdge("rb3DCooling", 0, false); p.AddEdge("rb3DCooling", rBMolassesEndTime, true); p.AddEdge("rb2DCooling", 0, false); p.AddEdge("rb2DCooling", rbMOTLoadTime, true); p.AddEdge("rbPushBeam", 0, false); p.AddEdge("rbPushBeam", rbMOTLoadTime, true); //Turn everything back on at end of sequence: p.AddEdge("rb3DCooling", (int)Parameters["PatternLength"] - (int)Parameters["TurnAllLightOn"], false); p.AddEdge("rb2DCooling", (int)Parameters["PatternLength"] - (int)Parameters["TurnAllLightOn"], false); p.AddEdge("rbPushBeam", (int)Parameters["PatternLength"] - (int)Parameters["TurnAllLightOn"], false); //p.AddEdge("rb3DCooling", 0, true); p.AddEdge("rbAbsImagingBeam", 0, true); p.AddEdge("rbAbsImagingBeam", cameraTrigger1 - 10, false); //turn on probe beam to image cloud p.AddEdge("rbAbsImagingBeam", cameraTrigger2 + (int)Parameters["Frame0TriggerDuration"], true); // turn off probe beam to take bg image // Abs image p.Pulse(0, cameraTrigger1, (int)Parameters["Frame0TriggerDuration"], "rbAbsImgCamTrig"); //trigger camera to take image of cloud p.Pulse(0, cameraTrigger2, (int)Parameters["Frame0TriggerDuration"], "rbAbsImgCamTrig"); //trigger camera to take image of probe p.Pulse(0, cameraTrigger3, (int)Parameters["Frame0TriggerDuration"], "rbAbsImgCamTrig"); //trigger camera to take image of background p.AddEdge("rb2DMOTShutter", 0, true); return(p); }
public override PatternBuilder32 GetDigitalPattern() { PatternBuilder32 p = new PatternBuilder32(); int patternStartBeforeQ = (int)Parameters["TCLBlockStart"]; MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters); // This is how you load "preset" patterns. p.Pulse(patternStartBeforeQ, (int)Parameters["Frame0Trigger"], (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); //camera trigger for first frame return(p); }
public override PatternBuilder32 GetDigitalPattern() { PatternBuilder32 p = new PatternBuilder32(); int patternStartBeforeQ = (int)Parameters["TCLBlockStart"]; MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters); // This is how you load "preset" patterns. p.Pulse(patternStartBeforeQ, (int)Parameters["MOTSwitchOffTime"], (int)Parameters["ExpansionTime"], "motAOM"); //pulse off the MOT light to release the cloud p.Pulse(patternStartBeforeQ, (int)Parameters["MOTSwitchOffTime"] + (int)Parameters["ExpansionTime"], (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); //camera trigger for first frame return(p); }
public override PatternBuilder32 GetDigitalPattern() { PatternBuilder32 p = new PatternBuilder32(); int patternStartBeforeQ = (int)Parameters["TCLBlockStart"]; MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters); // This is how you load "preset" patterns. p.Pulse(patternStartBeforeQ, (int)Parameters["MOTCoilsSwitchOn"], (int)Parameters["MOTCoilsSwitchOff"] - (int)Parameters["MOTCoilsSwitchOn"], "bTrigger"); //// B Field pulse for the BOP (top MOT coil) - bottom coil is in analog section p.Pulse(patternStartBeforeQ, (int)Parameters["Frame0Trigger"], (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); //camera trigger for first frame 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("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); }
public override PatternBuilder32 GetDigitalPattern() { PatternBuilder32 p = new PatternBuilder32(); int patternStartBeforeQ = (int)Parameters["TCLBlockStart"]; int cameraTrigger1 = (int)Parameters["MOTLoadTime"] + (int)Parameters["MOTCoilsCurrentRampDuration"] + (int)Parameters["WaitBeforeImage"] + (int)Parameters["CMOTHoldTime"]; int cameraTrigger2 = cameraTrigger1 + (int)Parameters["Frame1TriggerDelay"]; int cameraTrigger3 = cameraTrigger2 + (int)Parameters["Frame2TriggerDelay"]; MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters); // This is how you load "preset" patterns. // p.AddEdge("v00Shutter", 0, true); //p.Pulse(patternStartBeforeQ, 3000 - 1400, 10000, "bXSlowingShutter"); //Takes 14ms to start closing //p.Pulse(patternStartBeforeQ, (int)Parameters["Frame0Trigger"], (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); //camera trigger for first frame //Rb: p.AddEdge("rb3DCooling", 0, false); p.AddEdge("rb3DCooling", (int)Parameters["MOTLoadTime"] + (int)Parameters["MOTCoilsCurrentRampDuration"] + (int)Parameters["CMOTHoldTime"], true); p.AddEdge("rb2DCooling", 0, false); p.AddEdge("rb2DCooling", (int)Parameters["MOTLoadTime"], true); p.AddEdge("rbPushBeam", 0, false); p.AddEdge("rbPushBeam", (int)Parameters["MOTLoadTime"], true); //Turn everything back on at end of sequence: p.AddEdge("rb3DCooling", (int)Parameters["PatternLength"] - (int)Parameters["TurnAllLightOn"], false); p.AddEdge("rb2DCooling", (int)Parameters["PatternLength"] - (int)Parameters["TurnAllLightOn"], false); p.AddEdge("rbPushBeam", (int)Parameters["PatternLength"] - (int)Parameters["TurnAllLightOn"], false); //p.AddEdge("rb3DCooling", 0, true); p.AddEdge("rbAbsImagingBeam", 0, true); p.AddEdge("rbAbsImagingBeam", cameraTrigger1, false); p.AddEdge("rbAbsImagingBeam", cameraTrigger1 + (int)Parameters["Frame0TriggerDuration"], true); // Abs image p.Pulse(0, cameraTrigger1 - (int)Parameters["TriggerJitter"], (int)Parameters["Frame0TriggerDuration"], "rbAbsImgCamTrig"); //1st camera fram p.AddEdge("rbAbsImagingBeam", cameraTrigger2, false); p.AddEdge("rbAbsImagingBeam", cameraTrigger2 + (int)Parameters["Frame0TriggerDuration"], true); // Rb probe p.Pulse(0, cameraTrigger2 - (int)Parameters["TriggerJitter"], (int)Parameters["Frame0TriggerDuration"], "rbAbsImgCamTrig"); //2nd camera frame // Rb Bg p.Pulse(0, cameraTrigger3 - (int)Parameters["TriggerJitter"], (int)Parameters["Frame0TriggerDuration"], "rbAbsImgCamTrig"); //3rd camera frame return(p); }
public override PatternBuilder32 GetDigitalPattern() { PatternBuilder32 p = new PatternBuilder32(); int patternStartBeforeQ = (int)Parameters["TCLBlockStart"]; MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters); // This is how you load "preset" patterns. // p.AddEdge("v00Shutter", 0, true); //p.Pulse(patternStartBeforeQ, 3000 - 1400, 10000, "bXSlowingShutter"); //Takes 14ms to start closing p.Pulse(patternStartBeforeQ, (int)Parameters["Frame0Trigger"], (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); //camera trigger for first frame return(p); }
public override PatternBuilder32 GetDigitalPattern() { PatternBuilder32 p = new PatternBuilder32(); int patternStartBeforeQ = (int)Parameters["TCLBlockStart"]; int cMOTStartTime = patternStartBeforeQ + 4000; int cMOTEndTime = cMOTStartTime + (int)Parameters["CMOTRampDuration"] + (int)Parameters["CMOTHoldTime"]; int motSwitchOffTime = cMOTEndTime + 5000; MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters); // This is how you load "preset" patterns. p.Pulse(patternStartBeforeQ, cMOTEndTime + (int)Parameters["ExpansionTime"], (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); //camera trigger for first frame return(p); }
public override PatternBuilder32 GetDigitalPattern() { PatternBuilder32 p = new PatternBuilder32(); int patternStartBeforeQ = (int)Parameters["TCLBlockStart"]; int molassesStartTime = (int)Parameters["MOTSwitchOffTime"] + (int)Parameters["MolassesDelay"]; int resonantMolassesStartTime = molassesStartTime + (int)Parameters["MolassesDuration"]; int cameraTriggerTime = resonantMolassesStartTime + (int)Parameters["ResonantMolassesDuration"]; MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters); // This is how you load "preset" patterns. p.Pulse(patternStartBeforeQ, (int)Parameters["MOTSwitchOffTime"], (int)Parameters["MolassesDelay"], "motAOM"); //pulse off the MOT light whilst MOT fields are turning off p.Pulse(patternStartBeforeQ, cameraTriggerTime, (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); //camera trigger for first frame return(p); }
public override PatternBuilder32 GetDigitalPattern() { PatternBuilder32 p = new PatternBuilder32(); int patternStartBeforeQ = (int)Parameters["TCLBlockStart"]; MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters); // This is how you load "preset" patterns. int firstCameraTrigger = (int)Parameters["MOTLoadTime"] + (int)Parameters["MOTCoilsCurrentRampDuration"] + (int)Parameters["MolassesDuration"] + (int)Parameters["WaitBeforeImage"] + (int)Parameters["FreeExpansionTime"] - (int)Parameters["TriggerJitter"]; //int secondCameraTrigger = firstCameraTrigger + (int)Parameters["Frame1TriggerDelay"]; //int thirdCameraTrigger = secondCameraTrigger + (int)Parameters["Frame2TriggerDelay"]; //Rb: p.AddEdge("rb3DCooling", 0, false); p.AddEdge("rb3DCooling", (int)Parameters["MOTLoadTime"] + (int)Parameters["MOTCoilsCurrentRampDuration"] + (int)Parameters["MolassesDuration"], true); p.AddEdge("rb2DCooling", 0, false); p.AddEdge("rb2DCooling", (int)Parameters["MOTLoadTime"], true); p.AddEdge("rbPushBeam", 0, false); p.AddEdge("rbPushBeam", (int)Parameters["MOTLoadTime"], true); //p.AddEdge("rb3DCooling", 0, true); p.AddEdge("rbAbsImagingBeam", 0, true); p.AddEdge("rb3DCooling", firstCameraTrigger + (int)Parameters["TriggerJitter"], false); p.AddEdge("rb3DCooling", firstCameraTrigger + (int)Parameters["TriggerJitter"] + (int)Parameters["Frame0TriggerDuration"], true); // Abs image p.Pulse(0, firstCameraTrigger, (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); //1st camera frame //p.AddEdge("rbAbsImagingBeam", secondCameraTrigger + (int)Parameters["TriggerJitter"], false); //p.AddEdge("rbAbsImagingBeam", secondCameraTrigger + (int)Parameters["TriggerJitter"] + (int)Parameters["Frame0TriggerDuration"], true); // Rb probe //p.Pulse(0, secondCameraTrigger, (int)Parameters["Frame0TriggerDuration"], "rbAbsImgCamTrig"); //2nd camera frame // Rb Bg //p.Pulse(0, thirdCameraTrigger, (int)Parameters["Frame0TriggerDuration"], "rbAbsImgCamTrig"); //3rd camera frame //Turn everything back on at end of sequence: p.AddEdge("rb3DCooling", (int)Parameters["PatternLength"] - (int)Parameters["TurnAllLightOn"], false); p.AddEdge("rb2DCooling", (int)Parameters["PatternLength"] - (int)Parameters["TurnAllLightOn"], false); p.AddEdge("rbPushBeam", (int)Parameters["PatternLength"] - (int)Parameters["TurnAllLightOn"], false); return(p); }
public override PatternBuilder32 GetDigitalPattern() { PatternBuilder32 p = new PatternBuilder32(); int patternStartBeforeQ = (int)Parameters["TCLBlockStart"]; 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"]; MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters); // This is how you load "preset" patterns. p.Pulse(patternStartBeforeQ, (int)Parameters["MOTSwitchOffTime"], (int)Parameters["MolassesDelay"], "v00MOTAOM"); // pulse off the MOT light whilst MOT fields are turning off p.Pulse(patternStartBeforeQ, imageTime, (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); // camera trigger 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("triggerDelay"); p.AddChannel("motAOMAmp"); // Slowing field p.AddAnalogValue("slowingCoilsCurrent", 0, (double)Parameters["slowingCoilsValue"]); p.AddAnalogValue("slowingCoilsCurrent", (int)Parameters["slowingCoilsOffTime"], 0.0); // B Field p.AddAnalogValue("MOTCoilsCurrentTop", (int)Parameters["MOTCoilsSwitchOn"], (double)Parameters["MOTCoilsCurrentTopValue"]); p.AddAnalogValue("MOTCoilsCurrentTop", (int)Parameters["MOTCoilsSwitchOff"], 0.0); p.AddAnalogValue("MOTCoilsCurrentBottom", (int)Parameters["MOTCoilsSwitchOn"], (double)Parameters["MOTCoilsCurrentBottomValue"]); p.AddAnalogValue("MOTCoilsCurrentBottom", (int)Parameters["MOTCoilsSwitchOff"], 0.0); // Shim Fields p.AddAnalogValue("xShimCoilCurrent", 0, (double)Parameters["xShimLoadCurrent"]); p.AddAnalogValue("yShimCoilCurrent", 0, (double)Parameters["yShimLoadCurrent"]); p.AddAnalogValue("triggerDelay", 0, (double)Parameters["zShimLoadCurrent"]); // trigger delay // p.AddAnalogValue("triggerDelay", 0, (double)Parameters["triggerDelay"]); // F=1 p.AddAnalogValue("motAOMAmp", 0, (double)Parameters["v0F1AOMStartValue"]); // v0 Intensity Ramp p.AddAnalogValue("v0IntensityRamp", 0, (double)Parameters["v0IntensityRampStartValue"]); // v0 Frequency Ramp p.AddAnalogValue("v0FrequencyRamp", 0, (double)Parameters["v0FrequencyRampStartValue"]); p.SwitchAllOffAtEndOfPattern(); return(p); }
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); }
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); }