Exemplo n.º 1
0
    public override PatternBuilder32 GetDigitalPattern()
    {
        PatternBuilder32 p = new PatternBuilder32();

        MOTMasterScriptSnippet lm = new SHLoadMOT(p, Parameters); // This is how you load "preset" patterns.

        p.Pulse(0, 0, 1, "AnalogPatternTrigger");                 //NEVER CHANGE THIS!!!! IT TRIGGERS THE ANALOG PATTERN!

        p.Pulse(40000, 0, 100000, "TranslationStageTrigger");

        p.AddEdge("CameraTrigger", 0, true);
        p.DownPulse((int)Parameters["Frame0Trigger"], 0, (int)Parameters["Frame0TriggerDuration"], "CameraTrigger");
        p.DownPulse((int)Parameters["Frame1Trigger"], 0, (int)Parameters["Frame1TriggerDuration"], "CameraTrigger");
        p.DownPulse((int)Parameters["Frame2Trigger"], 0, (int)Parameters["Frame2TriggerDuration"], "CameraTrigger");

        p.DownPulse(190000, 0, 50, "CameraTrigger");
        p.DownPulse(195000, 0, 50, "CameraTrigger");

        // switches off the Zeeman and absorption beams to avoid reloading the MOT whilst imaging, and to allow fluorescence images to be obtained
        p.DownPulse((int)Parameters["Frame0Trigger"], 0, (int)Parameters["CameraExposure"], "aom2enable");
        p.DownPulse((int)Parameters["Frame0Trigger"], 0, (int)Parameters["CameraExposure"], "aom3enable");

        // loads the mag trap, Zeeman light is not switched back on again to avoid MOT reloading
        p.DownPulse((int)Parameters["MOTLoadDuration"], 0, (int)Parameters["MagTrapDuration"], "aom0enable");
        p.DownPulse((int)Parameters["MOTLoadDuration"], 0, (int)Parameters["MagTrapDuration"], "aom1enable");
        p.AddEdge("aom2enable", (int)Parameters["MOTLoadDuration"], false);
        p.AddEdge("aom3enable", (int)Parameters["MOTLoadDuration"], false);

        return(p);
    }
Exemplo n.º 2
0
    public override PatternBuilder32 GetDigitalPattern()
    {
        PatternBuilder32 p = new PatternBuilder32();

        MOTMasterScriptSnippet lm = new SHLoadMOT(p, Parameters); // This is how you load "preset" patterns.

        p.Pulse(0, 0, 10, "AnalogPatternTrigger");                //NEVER CHANGE THIS!!!! IT TRIGGERS THE ANALOG PATTERN!

        p.Pulse(100000, 0, 100000, "TranslationStageTrigger");

        p.AddEdge("CameraTrigger", 0, true);
        p.AddEdge("shutterenable", 0, true);
        p.DownPulse((int)Parameters["Frame0Trigger"] - 5, 0, (int)Parameters["ExposureTime"] + 10, "aom2enable");
        p.DownPulse((int)Parameters["Frame0Trigger"], 0, (int)Parameters["Frame0TriggerDuration"], "CameraTrigger");
        p.DownPulse((int)Parameters["Frame1Trigger"] - 5, 0, (int)Parameters["ExposureTime"] + 10, "aom2enable");
        p.DownPulse((int)Parameters["Frame1Trigger"], 0, (int)Parameters["Frame1TriggerDuration"], "CameraTrigger");
        p.DownPulse((int)Parameters["Frame2Trigger"] - 5, 0, (int)Parameters["ExposureTime"] + 10, "aom2enable");
        p.DownPulse((int)Parameters["Frame2Trigger"], 0, (int)Parameters["Frame2TriggerDuration"], "CameraTrigger");
        //p.DownPulse((int)Parameters["Frame4Trigger"] - 100, 0, (int)Parameters["ExposureTime"] + 200, "aom2enable");
        //p.DownPulse((int)Parameters["Frame4Trigger"], 0, (int)Parameters["Frame4TriggerDuration"], "CameraTrigger");

        //switches off Zeeman and Absoroption beams to obtain an image of the background scattered light with no probe beam present
        p.AddEdge("aom2enable", 1150000, false);
        p.AddEdge("aom3enable", 1150000, false);
        p.DownPulse((int)Parameters["Frame3Trigger"], 0, (int)Parameters["Frame3TriggerDuration"], "CameraTrigger");

        p.DownPulse(1500000, 0, 50, "CameraTrigger");
        p.DownPulse(1550000, 0, 50, "CameraTrigger");

        return(p);
    }
Exemplo n.º 3
0
    public override PatternBuilder32 GetDigitalPattern()
    {
        PatternBuilder32 p = new PatternBuilder32();

        MOTMasterScriptSnippet lm = new SHLoadMOT(p, Parameters); // This is how you load "preset" patterns.

        p.Pulse(0, 0, 1, "AnalogPatternTrigger");                 //NEVER CHANGE THIS!!!! IT TRIGGERS THE ANALOG PATTERN!

        p.Pulse(10000, 0, 100000, "TranslationStageTrigger");

        p.AddEdge("CameraTrigger", 0, true);
        p.AddEdge("shutterenable", 0, true);
        p.DownPulse((int)Parameters["Frame0Trigger"], 0, (int)Parameters["Frame0TriggerDuration"], "CameraTrigger");
        p.DownPulse((int)Parameters["Frame1Trigger"], 0, (int)Parameters["Frame1TriggerDuration"], "CameraTrigger");
        //p.DownPulse((int)Parameters["Frame2Trigger"], 0, (int)Parameters["Frame2TriggerDuration"], "CameraTrigger");
        //p.DownPulse((int)Parameters["Frame3Trigger"], 0, (int)Parameters["Frame3TriggerDuration"], "CameraTrigger");
        //p.DownPulse((int)Parameters["Frame4Trigger"], 0, (int)Parameters["Frame4TriggerDuration"], "CameraTrigger");
        p.AddEdge("shutterenable", 50000, false);

        p.DownPulse(190000, 0, 50, "CameraTrigger");
        p.DownPulse(195000, 0, 50, "CameraTrigger");

        //p.AddEdge("aom0enable", (int)Parameters["MOTLoadTime"], false);
        //p.AddEdge("aom1enable", (int)Parameters["MOTLoadTime"], false);
        //p.AddEdge("aom2enable", (int)Parameters["Frame0Trigger"], false);

        return(p);
    }
Exemplo n.º 4
0
    public override PatternBuilder32 GetDigitalPattern()
    {
        PatternBuilder32 p = new PatternBuilder32();

        int motCompressStartTime    = (int)Parameters["LoadingDuration"];
        int molassesStartTime       = motCompressStartTime + (int)Parameters["MOTCoilsCurrentRampDuration"] + (int)Parameters["MOTCoilsCurrentWaitAfterRamp"];
        int opticalPumpingStartTime = molassesStartTime + (int)Parameters["MolassesDuration"];
        int magTrapStartTime        = opticalPumpingStartTime + (int)Parameters["OpticalPumpingDuration"];
        int motRecaptureTime        = magTrapStartTime + (int)Parameters["MagTrapDuration"];
        int imageTime = motRecaptureTime + (int)Parameters["MOTWaitBeforeImage"];

        p.Pulse(0, 0, 10, "aoPatternTrigger");  // THIS TRIGGERS THE ANALOG PATTERN. The analog pattern will start at the same time as the Q-switch is fired.

        p.Pulse(0, opticalPumpingStartTime, motRecaptureTime - opticalPumpingStartTime, "rbCoolingAOM");

        p.AddEdge("rbOpticalPumpingAOM", 0, true);                                                                  // Turn off for most of sequence
        p.DownPulse(0, opticalPumpingStartTime, (int)Parameters["OpticalPumpingDuration"], "rbOpticalPumpingAOM");  // Turn on for optical pumping step
        p.AddEdge("rbOpticalPumpingAOM", imageTime + 2000, false);                                                  // Turn back on safely after imaging has finished

        p.Pulse(0, magTrapStartTime - 1600, motRecaptureTime - magTrapStartTime + 1600 - 1200, "rbCoolingShutter"); // Takes 16ms to start closing, 14ms to fully open
        p.Pulse(0, magTrapStartTime - 1400, motRecaptureTime - magTrapStartTime + 1400, "rbOpticalPumpingShutter"); // Takes 14ms to start closing, don't really care when it opens again as not required for imaging

        //p.Pulse(0, molassesStartTime - 500, (int)Parameters["Frame0TriggerDuration"], "cameraTrigger2");

        p.Pulse(0, imageTime, (int)Parameters["Frame0TriggerDuration"], "cameraTrigger2");

        return(p);
    }
Exemplo n.º 5
0
    public override PatternBuilder32 GetDigitalPattern()
    {
        PatternBuilder32 p = new PatternBuilder32();

        int patternStartBeforeQ         = (int)Parameters["TCLBlockStart"];
        int rbMOTLoadingStartTime       = patternStartBeforeQ;
        int rbMOTLoadingEndTime         = rbMOTLoadingStartTime + (int)Parameters["RbMOTLoadTime"];
        int moleculeMOTLoadingStartTime = rbMOTLoadingEndTime;
        int moleculeMOTLoadingEndTime   = moleculeMOTLoadingStartTime + 5000 + (int)Parameters["v0IntensityRampDuration"] + (int)Parameters["MOTHoldTime"];
        int firstImageTime = moleculeMOTLoadingEndTime + (int)Parameters["FieldDecayTime"] + (int)Parameters["FreeExpansionTime"];


        /*
         * for (int t = 0; t < (int)Parameters["RbMOTLoadTime"]; t += 50000)
         * {
         *  p.Pulse(patternStartBeforeQ + t, -(int)Parameters["FlashToQ"], (int)Parameters["QSwitchPulseDuration"], "flashLamp"); //trigger the flashlamp
         *  p.Pulse(patternStartBeforeQ + t, 0, (int)Parameters["QSwitchPulseDuration"], "qSwitch"); //trigger the Q switch
         * }
         */

        MOTMasterScriptSnippet lm = new LoadMoleculeMOTNoSlowingEdge(p, Parameters);

        p.Pulse(0, moleculeMOTLoadingEndTime + (int)Parameters["FieldDecayTime"], (int)Parameters["FreeExpansionTime"], "v00MOTAOM");

        p.Pulse(0, firstImageTime, (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); //camera trigger for first frame



        return(p);
    }
Exemplo n.º 6
0
    public override PatternBuilder32 GetDigitalPattern()
    {
        PatternBuilder32 p = new PatternBuilder32();

        MOTMasterScriptSnippet lm = new SHLoadMOT(p, Parameters); // This is how you load "preset" patterns.

        p.Pulse(0, 0, 1, "AnalogPatternTrigger");                 //NEVER CHANGE THIS!!!! IT TRIGGERS THE ANALOG PATTERN!

        p.Pulse(10000, 0, 100000, "TranslationStageTrigger");

        p.AddEdge("CameraTrigger", 0, true);
        p.DownPulse((int)Parameters["Frame0Trigger"], 0, (int)Parameters["Frame0TriggerDuration"], "CameraTrigger");
        p.DownPulse((int)Parameters["Frame1Trigger"], 0, (int)Parameters["Frame1TriggerDuration"], "CameraTrigger");

        p.DownPulse(150000, 0, 50, "CameraTrigger");
        p.DownPulse(155000, 0, 50, "CameraTrigger");

        // loads the mag trap by switching off the MOT beams
        p.AddEdge("aom0enable", (int)Parameters["MOTLoadTime"], false);
        p.AddEdge("aom1enable", (int)Parameters["MOTLoadTime"], false);
        //p.AddEdge("aom2enable", (int)Parameters["Frame0Trigger"], false); //switches off Zeeman beam
        p.AddEdge("aom2enable", (int)Parameters["MOTLoadTime"], false);
        //p.AddEdge("aom3enable", (int)Parameters["MOTLoadTime"], false);
        p.DownPulse((int)Parameters["MOTLoadTime"], 0, (int)Parameters["Frame0Trigger"] - (int)Parameters["MOTLoadTime"], "aom3enable");
        //p.Pulse((int)Parameters["Frame1Trigger"], 0, (int)Parameters["ExposureTime"], "aom3enable");

        return(p);
    }
Exemplo n.º 7
0
    public override PatternBuilder32 GetDigitalPattern()
    {
        PatternBuilder32 p = new PatternBuilder32();

        //The pattern builder assumes that digital channels are off at time zero, unless you tell them so.
        //Turning anything Off as a first command will cause "edge conflict error", unless it was turned On at time zero.

        MOTMasterScriptSnippet lm = new SHLoadMOT(p, Parameters);  // This just loads the MOT, and leaves it "on". You need

        //turn off the MOT and Zeeman light yourself

        p.Pulse(0, 0, 1, "AnalogPatternTrigger");  //NEVER CHANGE THIS!!!! IT TRIGGERS THE ANALOG PATTERN!

        p.AddEdge("CameraTrigger", 0, true);
        p.AddEdge("shutterenable", 0, true);

        //switches off Zeeman beams after loading
        p.AddEdge("shutterenable", (int)Parameters["MOTLoadEndTime"], false);

        //turn OFF the MOT AOMs, cutting off all light to the chamber
        p.AddEdge("aom3enable", (int)Parameters["MagTrapTransferTime"], false);

        //Imaging
        p.Pulse((int)Parameters["Frame0Trigger"], 0, 100, "aom1enable");
        p.DownPulse((int)Parameters["Frame0Trigger"], 0, 100, "CameraTrigger");  //take an image of the cloud after D1 stage

        p.Pulse((int)Parameters["Frame1Trigger"] + 10010, 0, 100, "aom1enable");
        p.DownPulse((int)Parameters["Frame1Trigger"] + 10010, 0, 100, "CameraTrigger"); //take an image without the cloud.

        //p.AddEdge("aom1enable", 150000, false);
        p.DownPulse(160000, 0, 50, "CameraTrigger"); //background image - no light.

        return(p);
    }
Exemplo n.º 8
0
    public override PatternBuilder32 GetDigitalPattern()
    {
        PatternBuilder32 p      = new PatternBuilder32();
        int patternStartBeforeQ = (int)Parameters["TCLBlockStart"] + (int)Parameters["MOTLoadTime"] + (int)Parameters["CMOTCoilsCurrentRampDuration"];

        MOTMasterScriptSnippet lm = new LoadMoleculeMOTDualSpecies(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

        //Rb light switches:

        p.AddEdge("rb3DCooling", 0, false);
        p.AddEdge("rb3DCooling", (int)Parameters["MOTLoadTime"] + (int)Parameters["CMOTCoilsCurrentRampDuration"] + 50000, true);
        p.AddEdge("rb2DCooling", 0, false);
        p.AddEdge("rb2DCooling", (int)Parameters["MOTLoadTime"], true); //Switch off 2D MOT after 3D MOT is loaded
        p.AddEdge("rbPushBeam", 0, false);
        p.AddEdge("rbPushBeam", (int)Parameters["MOTLoadTime"], true);  //Switch off push beam after 3D MOT is loaded


        //Here we send 4 camera triggers once the CaF MOT is loaded separated by 25 ms each to do a single experiment life time measurement:
        p.Pulse(patternStartBeforeQ, (int)Parameters["Frame0Trigger"], (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); //camera trigger for first frame
        //p.Pulse(patternStartBeforeQ, (int)Parameters["Frame0Trigger"] + 2500, (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); //camera trigger for 2nd frame
        //p.Pulse(patternStartBeforeQ, (int)Parameters["Frame0Trigger"] + 5000, (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); //camera trigger for 3rd frame
        //p.Pulse(patternStartBeforeQ, (int)Parameters["Frame0Trigger"] + 7500, (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); //camera trigger for 4th frame
        //p.Pulse(patternStartBeforeQ, (int)Parameters["Frame0Trigger"] + 10000, (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); //camera trigger for 4th frame

        p.Pulse(patternStartBeforeQ, (int)Parameters["Frame0Trigger"] + 7500, (int)Parameters["Frame0TriggerDuration"], "rbAbsImgCamTrig"); //camera trigger for 4th frame

        return(p);
    }
Exemplo n.º 9
0
    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);
    }
Exemplo n.º 10
0
    public override PatternBuilder32 GetDigitalPattern()
    {
        PatternBuilder32 p = new PatternBuilder32();

        //The pattern builder assumes that digital channels are off at time zero, unless you tell them so.
        //Turning anything Off as a first command will cause "edge conflict error", unless it was turned On at time zero.

        MOTMasterScriptSnippet lm = new SHLoadMOT(p, Parameters);  // This just loads the MOT, and leaves it "on". You need

        //turn off the MOT and Zeeman light yourself

        p.Pulse(0, 0, 1, "AnalogPatternTrigger");  //NEVER CHANGE THIS!!!! IT TRIGGERS THE ANALOG PATTERN!

        p.AddEdge("CameraTrigger", 0, true);
        p.AddEdge("shutterenable", 0, true);
        p.AddEdge("aom4enable", 0, true);          //leave the optical pumping aom on for the MOT loading to stabilise it.
        p.AddEdge("probeshutterenable", 0, false); // leave the molasses shutter open

        //close the oven shutter after loading
        p.AddEdge("ovenShutterOpen", (int)Parameters["MOTLoadEndTime"] - 3000, false);

        //switches off Zeeman beams after loading
        p.AddEdge("shutterenable", (int)Parameters["MOTLoadEndTime"], false);

        //turn OFF the MOT EOMs, pumping atoms into f=1 ground state
        p.AddEdge("D2EOMenable", (int)Parameters["MOTEndTime"] - 1, false);


        //turn OFF the MOT AOMs, cutting off all light to the chamber
        p.AddEdge("aom3enable", (int)Parameters["MOTEndTime"], false);
        //turn off the Optical Pumping AOM at this time
        p.AddEdge("aom4enable", (int)Parameters["MOTEndTime"] - 1000, false);

        //pulse on the molasses light
        p.Pulse((int)Parameters["MOTEndTime"], (int)Parameters["MolStartDelay"], (int)Parameters["MolassesPulseLength"], "aom2enable");

        //Close molasses shutter
        p.AddEdge("probeshutterenable", (int)Parameters["MOTEndTime"] + (int)Parameters["MolStartDelay"] + (int)Parameters["MolassesPulseLength"] + (int)Parameters["MolassesShutterCloseTime"] - 30, true);

        //Optical Pumping
        p.Pulse((int)Parameters["MOTEndTime"] + (int)Parameters["MolStartDelay"] + (int)Parameters["MolassesPulseLength"] + (int)Parameters["MagTrapDelay"], -(int)Parameters["OPTimeDelay"], (int)Parameters["OPPulseLength"], "aom4enable");

        //Magnetic trap

        //Imaging
        p.Pulse((int)Parameters["MOTEndTime"] + (int)Parameters["MolStartDelay"] + (int)Parameters["MolassesPulseLength"] + (int)Parameters["MagTrapDelay"] + (int)Parameters["MagTrapRampTime"] + (int)Parameters["MagTrapHoldTime"] + (int)Parameters["ImageDelay"], 0, 100, "aom1enable");
        p.DownPulse((int)Parameters["MOTEndTime"] + (int)Parameters["MolStartDelay"] + (int)Parameters["MolassesPulseLength"] + (int)Parameters["MagTrapDelay"] + (int)Parameters["MagTrapRampTime"] + (int)Parameters["MagTrapHoldTime"] + (int)Parameters["ImageDelay"], 0, 100, "CameraTrigger"); //take an image of the cloud after D1 stage

        p.Pulse((int)Parameters["Frame1Trigger"], -1, 100, "aom1enable");
        p.DownPulse((int)Parameters["Frame1Trigger"], 0, 100, "CameraTrigger"); //take an image without the cloud.

        //p.AddEdge("aom1enable", 150000, false);
        p.DownPulse(90000, 0, 50, "CameraTrigger"); //background image - no light.
        p.DownPulse(100000, 0, 50, "CameraTrigger");
        return(p);
    }
Exemplo n.º 11
0
    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"];
        int blowAwayTime          = microwavePulseTime + (int)Parameters["MicrowavePulseDuration"];
        int firstRamseyPulseTime  = blowAwayTime + (int)Parameters["PokeDuration"];
        int spinEchoPulseTime     = firstRamseyPulseTime + (int)Parameters["RamseyPulseDuration"] + (int)Parameters["RamseyTime"];
        int secondRamseyPulseTime = spinEchoPulseTime + 2 * (int)Parameters["RamseyPulseDuration"] + (int)Parameters["RamseyTimeSecond"];
        int magTrapStartTime      = secondRamseyPulseTime + (int)Parameters["RamseyPulseDuration"];
        int motRecaptureTime      = magTrapStartTime + (int)Parameters["MagneticTrapDuration"];
        int imageTime             = motRecaptureTime + (int)Parameters["MOTWaitBeforeImage"];

        MOTMasterScriptSnippet lm = new LoadMoleculeMOTNoSlowingEdge(p, Parameters);                                                             // This is how you load "preset" patterns.

        p.Pulse(patternStartBeforeQ, microwavePulseTime, (int)Parameters["MicrowavePulseDuration"], "microwaveA");                               //now linked to B channel
        p.Pulse(patternStartBeforeQ, firstRamseyPulseTime, (int)Parameters["RamseyPulseDuration"], "microwaveB");                                // now linked to gigatronics
        p.Pulse(patternStartBeforeQ, spinEchoPulseTime, 2 * (int)Parameters["RamseyPulseDuration"], "microwaveB");                               // now linked to gigatronics
        p.Pulse(patternStartBeforeQ, secondRamseyPulseTime, (int)Parameters["RamseyPulseDuration"], "microwaveB");                               // now linked to gigatronics

        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, motRecaptureTime - microwavePulseTime, "v00MOTAOM");                                    // turn off the MOT light for microwave pulse

        p.Pulse(patternStartBeforeQ, blowAwayTime, (int)Parameters["PokeDuration"], "bXSlowingAOM");                                             // Blow away pulse during magnetic trap
        p.AddEdge("bXSlowingAOM", patternStartBeforeQ + (int)Parameters["slowingAOMOffStart"] + (int)Parameters["slowingAOMOffDuration"], true); // send slowing aom high and hold it high

        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();
        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 microwavePulseTime          = singleFrequencyMolassesTime + (int)Parameters["SingleFreqMolassesDuration"];
        int motRecaptureTime            = microwavePulseTime + (int)Parameters["v00ChirpDuration"] + (int)Parameters["v00ChirpWait"];;
        int imageTime = motRecaptureTime + (int)Parameters["MOTWaitBeforeImage"];

        MOTMasterScriptSnippet lm = new LoadMoleculeMOTNoSlowingEdge(p, Parameters);  // This is how you load "preset" patterns.

        p.Pulse(patternStartBeforeQ, microwavePulseTime, (int)Parameters["MicrowavePulseDuration"], "microwaveC");

        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, microwavePulseTime, motRecaptureTime - microwavePulseTime, "v00MOTAOM");             // turn off the MOT light for microwave pulse

        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.AddEdge("bXSlowingAOM", patternStartBeforeQ + (int)Parameters["slowingAOMOffStart"] + (int)Parameters["slowingAOMOffDuration"], true);              // send slowing aom high and hold it high
        p.AddEdge("v10SlowingAOM", patternStartBeforeQ + (int)Parameters["slowingRepumpAOMOffStart"] + (int)Parameters["slowingRepumpAOMOffDuration"], true); // send slowing repump aom high and hold it high

        p.Pulse(patternStartBeforeQ, (int)Parameters["MOTSwitchOffTime"] - 1400, 5000, "bXSlowingShutter");                                                   //Takes 14ms to start closing
        //p.Pulse(patternStartBeforeQ, microwavePulseTime - 1675, motRecaptureTime - microwavePulseTime + 1675 - 1000, "v00MOTShutter");

        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();
        int patternStartBeforeQ      = (int)Parameters["TCLBlockStart"];
        int molassesStartTime        = (int)Parameters["MOTSwitchOffTime"] + (int)Parameters["MolassesDelay"];
        int molassesRampTime         = molassesStartTime + (int)Parameters["MolassesHoldTime"];
        int v0F0PumpStartTime        = molassesRampTime + (int)Parameters["MolassesRampDuration"];
        int microwavePulseTime       = v0F0PumpStartTime + (int)Parameters["v0F0PumpDuration"];
        int blowAwayTime             = microwavePulseTime + (int)Parameters["MicrowavePulseDuration"];
        int magTrapStartTime         = blowAwayTime + (int)Parameters["PokeDuration"] + (int)Parameters["MicrowaveSecondPulseDuration"]; //Empty space same length as second microwave pulse to make as similar as possible to N=1 script
        int microwaveSecondPulseTime = magTrapStartTime + (int)Parameters["MagneticTrapDuration"];
        int motRecaptureTime         = microwaveSecondPulseTime + (int)Parameters["MicrowaveSecondPulseDuration"];
        int imageTime = motRecaptureTime + (int)Parameters["MOTWaitBeforeImage"];

        MOTMasterScriptSnippet lm = new LoadMoleculeMOTNoSlowingEdge(p, Parameters);                                                       // This is how you load "preset" patterns.

        p.Pulse(patternStartBeforeQ, microwavePulseTime, (int)Parameters["MicrowavePulseDuration"], "microwaveIO");                        //now linked to B channel
        p.Pulse(patternStartBeforeQ, microwaveSecondPulseTime, (int)Parameters["MicrowaveSecondPulseDuration"], "microwaveSweepTrigger");  // now linked to A channel

        p.Pulse(patternStartBeforeQ, (int)Parameters["MOTSwitchOffTime"], (int)Parameters["MolassesDelay"], "v00AOM");                     // pulse off the MOT light whilst MOT fields are turning off
        p.Pulse(patternStartBeforeQ, microwavePulseTime, motRecaptureTime - microwavePulseTime, "v00AOM");                                 // turn off the MOT light for microwave pulse

        p.Pulse(patternStartBeforeQ, blowAwayTime, (int)Parameters["PokeDuration"], "aom");                                                // Blow away pulse during magnetic trap
        p.AddEdge("aom", patternStartBeforeQ + (int)Parameters["slowingAOMOffStart"] + (int)Parameters["slowingAOMOffDuration"], true);    // send slowing aom high and hold it high

        p.Pulse(patternStartBeforeQ, blowAwayTime - 600, (int)Parameters["MagneticTrapDuration"], "bXShutter");                            // takes 12ms to shut, want 1 ms poke, don't care when it reopens
        p.Pulse(patternStartBeforeQ, magTrapStartTime - 1100, (int)Parameters["MagneticTrapDuration"] - 1000, "v00Shutter");               // takes 12ms to start to shut (need open for optical pumping step), 21ms to reopen, want open at end of trap but closed at start

        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);
    }
Exemplo n.º 14
0
    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"], (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); //camera trigger for first frame
        p.Pulse(patternStartBeforeQ, (int)Parameters["MOTSwitchOffTime"], (int)Parameters["ExpansionTime"], "motAOM");

        return(p);
    }
Exemplo n.º 15
0
    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);
    }
Exemplo n.º 16
0
    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);
    }
Exemplo n.º 17
0
    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.Pulse(patternStartBeforeQ, (int)Parameters["MOTSwitchOffTime"], 100, "motAOM");                                          //pulse off the MOT light whilst MOT fields are turning off
        p.Pulse(patternStartBeforeQ, (int)Parameters["MOTSwitchOffTime"] + (int)Parameters["MolassesDuration"], 100, "motAOM");    //pulse off the MOT light to release the cloud
        p.Pulse(patternStartBeforeQ, (int)Parameters["Frame0Trigger"], (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); //camera trigger for first frame
        //
        return(p);
    }
Exemplo n.º 19
0
    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["MOTAOMStartTime"], (int)Parameters["MOTAOMDuration"], "motAOM");                                             //pulse off the MOT light to release the cloud
        p.Pulse(patternStartBeforeQ, (int)Parameters["MOTCoilsSwitchOn"], (int)Parameters["MOTCoilsSwitchOff"] - (int)Parameters["MOTCoilsSwitchOn"], "bTrigger"); //B field pulse
        p.Pulse(patternStartBeforeQ, (int)Parameters["Frame0Trigger"], (int)Parameters["Frame0TriggerDuration"], "cameraTrigger");                                 //camera trigger for first frame

        return(p);
    }
Exemplo n.º 20
0
    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);
    }
Exemplo n.º 21
0
    public override PatternBuilder32 GetDigitalPattern()
    {
        PatternBuilder32 p = new PatternBuilder32();

        p.Pulse(0, 0, 10, "aoPatternTrigger");  //THIS TRIGGERS THE ANALOG PATTERN. The analog pattern will start at the same time as the Q-switch is fired.

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

        p.Pulse(patternStartBeforeQ, -(int)Parameters["TCLBlockStart"], (int)Parameters["TCLBlockDuration"], "tclBlock");

        p.Pulse(patternStartBeforeQ, -(int)Parameters["FlashToQ"], (int)Parameters["QSwitchPulseDuration"], "flashLamp");                                                                    //trigger the flashlamp
        p.Pulse(patternStartBeforeQ, 0, (int)Parameters["QSwitchPulseDuration"], "qSwitch");                                                                                                 //trigger the Q switch

        p.Pulse(patternStartBeforeQ, (int)Parameters["slowingAOMOnStart"], (int)Parameters["slowingAOMOffStart"] - (int)Parameters["slowingAOMOnStart"], "bXSlowingAOM");                    //first pulse to slowing AOM
        p.AddEdge("bXSlowingAOM", patternStartBeforeQ + (int)Parameters["slowingAOMOffStart"] + (int)Parameters["slowingAOMOffDuration"], true);                                             // send slowing aom high and hold it high

        p.Pulse(patternStartBeforeQ, (int)Parameters["slowingRepumpAOMOnStart"], (int)Parameters["slowingRepumpAOMOffStart"] - (int)Parameters["slowingRepumpAOMOnStart"], "v10SlowingAOM"); //first pulse to slowing repump AOM
        p.AddEdge("v10SlowingAOM", patternStartBeforeQ + (int)Parameters["slowingRepumpAOMOffStart"] + (int)Parameters["slowingRepumpAOMOffDuration"], true);                                // send slowing repump aom high and hold it high

        p.Pulse(patternStartBeforeQ, (int)Parameters["BgCameraTrigger"], (int)Parameters["Frame0TriggerDuration"], "cameraTrigger2");                                                        //camera trigger for first frame
        //p.Pulse(patternStartBeforeQ, (int)Parameters["BgCameraTrigger"], (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); //camera trigger for first frame
        p.Pulse(patternStartBeforeQ, (int)Parameters["BgCameraTrigger"] + (int)Parameters["MeasCameraTriggerDelay"], (int)Parameters["Frame0TriggerDuration"], "cameraTrigger");

        return(p);
    }
    public override PatternBuilder32 GetDigitalPattern()
    {
        PatternBuilder32 p      = new PatternBuilder32();
        int patternStartBeforeQ = (int)Parameters["TCLBlockStart"];

        MOTMasterScriptSnippet lm = new LoadMoleculeMOTNoSlowingEdge(p, Parameters);                                                                                                                                                        // This is how you load "preset" patterns.

        p.Pulse(patternStartBeforeQ, (int)Parameters["PokeStartTime"], (int)Parameters["PokeDuration"], "aom");                                                                                                                             //poke pulse to MOT
        p.AddEdge("aom", patternStartBeforeQ + (int)Parameters["slowingAOMOffStart"] + (int)Parameters["slowingAOMOffDuration"], true);                                                                                                     // send slowing aom high and hold it high
        p.Pulse(patternStartBeforeQ, (int)Parameters["PokeStartTime"] - (int)Parameters["PrePokeTime"], (int)Parameters["PrePokeTime"] + (int)Parameters["PokeDuration"] + (int)Parameters["PostPokeTime"], "motAOM");                      //mot light off during poke
        p.Pulse(patternStartBeforeQ, (int)Parameters["PokeStartTime"] + (int)Parameters["PokeDuration"] + (int)Parameters["PostPokeTime"] + (int)Parameters["OscillationTime"], (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"];
        int blowAwayTime             = microwavePulseTime + (int)Parameters["MicrowavePulseDuration"];
        int secondMicrowavePulseTime = blowAwayTime + (int)Parameters["PokeDuration"];
        int magTrapStartTime         = secondMicrowavePulseTime + (int)Parameters["SecondMicrowavePulseDuration"] + (int)Parameters["WaitBeforeMagTrap"];
        int motRecaptureTime         = magTrapStartTime + (int)Parameters["MagTrapDuration"];
        int imageTime = motRecaptureTime + (int)Parameters["MOTWaitBeforeImage"];

        MOTMasterScriptSnippet lm = new LoadMoleculeMOTNoSlowingEdge(p, Parameters);  // This is how you load "preset" patterns.

        p.Pulse(patternStartBeforeQ, microwavePulseTime, (int)Parameters["MicrowavePulseDuration"], "microwaveB");
        p.Pulse(patternStartBeforeQ, secondMicrowavePulseTime, (int)Parameters["SecondMicrowavePulseDuration"], "microwaveA");
        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, motRecaptureTime - microwavePulseTime, "v00MOTAOM");                                                 // turn off the MOT light for microwave pulse

        p.Pulse(patternStartBeforeQ, blowAwayTime, (int)Parameters["PokeDuration"], "bXSlowingAOM");                                                          // Blow away
        p.AddEdge("bXSlowingAOM", patternStartBeforeQ + (int)Parameters["slowingAOMOffStart"] + (int)Parameters["slowingAOMOffDuration"], true);              // send slowing aom high and hold it high
        p.AddEdge("v10SlowingAOM", patternStartBeforeQ + (int)Parameters["slowingRepumpAOMOffStart"] + (int)Parameters["slowingRepumpAOMOffDuration"], true); // send slowing repump aom high and hold it high

        p.Pulse(patternStartBeforeQ, secondMicrowavePulseTime - 1400, (int)Parameters["MagTrapDuration"] + 3000, "bXSlowingShutter");                         //Takes 14ms to start closing
        //p.Pulse(patternStartBeforeQ, microwavePulseTime - 1500, motRecaptureTime - microwavePulseTime + 1500 - 1100, "v00MOTShutter");

        //p.Pulse(patternStartBeforeQ, molassesStartTime, secondMicrowavePulseTime - 100 - molassesStartTime, "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 void AddDigitalSnippet(PatternBuilder32 p, Dictionary <String, Object> parameters)
        {
            int patternStartBeforeQ      = (int)parameters["TCLBlockStart"];
            int slowingChirpStartTime    = (int)parameters["SlowingChirpStartTime"];
            int slowingNewDetuningTime   = slowingChirpStartTime + (int)parameters["SlowingChirpDuration"];
            int slowingChirpBackTime     = slowingNewDetuningTime + (int)parameters["SlowingChirpHoldDuration"];
            int slowingChirpFinishedTime = slowingChirpBackTime + (int)parameters["SlowingChirpDuration"];

            p.Pulse(patternStartBeforeQ, slowingChirpStartTime, slowingChirpFinishedTime - slowingChirpStartTime, "bXLockBlock");;                                                               // Want it to be blocked for whole time that bX laser is moved
            p.Pulse(0, 0, 10, "aoPatternTrigger");                                                                                                                                               //THIS TRIGGERS THE ANALOG PATTERN. The analog pattern will start at the same time as the Q-switch is fired.
            p.Pulse(patternStartBeforeQ, -(int)parameters["HeliumShutterToQ"], (int)parameters["HeliumShutterDuration"], "heliumShutter");
            p.Pulse(patternStartBeforeQ, (int)parameters["slowingAOMOnStart"], (int)parameters["slowingAOMOffStart"] - (int)parameters["slowingAOMOnStart"], "bXSlowingAOM");                    //first pulse to slowing AOM
            p.Pulse(patternStartBeforeQ, (int)parameters["slowingRepumpAOMOnStart"], (int)parameters["slowingRepumpAOMOffStart"] - (int)parameters["slowingRepumpAOMOnStart"], "v10SlowingAOM"); //first pulse to slowing repump AOM
        }
Exemplo n.º 25
0
    public override PatternBuilder32 GetDigitalPattern()
    {
        PatternBuilder32 p      = new PatternBuilder32();
        int patternStartBeforeQ = (int)Parameters["TCLBlockStart"];
        int releaseTime         = (int)Parameters["MOTSwitchOffTime"];
        int cameraTriggerTime   = releaseTime + (int)Parameters["ExpansionTime"];

        MOTMasterScriptSnippet lm = new LoadMoleculeMOT(p, Parameters);                                             // This is how you load "preset" patterns.

        p.Pulse(patternStartBeforeQ, releaseTime, cameraTriggerTime - releaseTime, "v00MOTAOM");                    //pulse off the MOT light to release the cloud
        // 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);
    }
Exemplo n.º 26
0
    public override PatternBuilder32 GetDigitalPattern()
    {
        PatternBuilder32 p = new PatternBuilder32();

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

        p.Pulse(0, 0, 10, "aoPatternTrigger");                     // THIS TRIGGERS THE ANALOG PATTERN. The analog pattern will start at the same time as the Q-switch is fired.

        p.AddEdge("rbOpticalPumpingAOM", 0, true);                 // Turn off for most of sequence
        p.AddEdge("rbOpticalPumpingAOM", imageTime + 2000, false); // Turn back on safely after imaging has finished

        p.Pulse(0, imageTime, (int)Parameters["Frame0TriggerDuration"], "cameraTrigger2");

        return(p);
    }
Exemplo n.º 27
0
    public override PatternBuilder32 GetDigitalPattern()
    {
        PatternBuilder32 p = new PatternBuilder32();

        //The pattern builder assumes that digital channels are off at time zero, unless you tell them so.
        //Turning anything Off as a first command will cause "edge conflict error", unless it was turned On at time zero.


        p.Pulse(0, 0, 1, "AnalogPatternTrigger");  //NEVER CHANGE THIS!!!! IT TRIGGERS THE ANALOG PATTERN!


        p.AddEdge("CameraTrigger", 0, true);
        p.AddEdge("shutterenable", 0, true);
        p.AddEdge("shutterenable", 500, false);
        p.AddEdge("shutterenable", 1500, true);


        //p.DownPulse(10000 , -5, 2, "CameraTrigger"); //take an image without the cloud.


        p.DownPulse(1000, 0, 2, "CameraTrigger"); //background image - no light.
        //p.DownPulse(10005, 0, 2, "CameraTrigger"); //take an image without the cloud.
        //p.DownPulse(10010, 0, 2, "CameraTrigger"); //take an image without the cloud.

        p.DownPulse(20005, 0, 50, "CameraTrigger"); //take an image without the cloud.
        p.DownPulse(30010, 0, 50, "CameraTrigger"); //take an image without the cloud.
        return(p);
    }
Exemplo n.º 28
0
    public override PatternBuilder32 GetDigitalPattern()
    {
        PatternBuilder32 p = new PatternBuilder32();

        MOTMasterScriptSnippet lm = new SHLoadMOT(p, Parameters); // This is how you load "preset" patterns.

        p.Pulse(0, 0, 1, "AnalogPatternTrigger");                 //NEVER CHANGE THIS!!!! IT TRIGGERS THE ANALOG PATTERN!



        p.AddEdge("D2aomshutter1", 0, true); //The pattern builder assumes that digital channels are off at time zero, unless you tell them so.
        p.AddEdge("D2aomshutter2", 0, true); //Turning anything Off as a first command will cause "edge conflict error", unless it was turned On at time zero.

        p.AddEdge("CameraTrigger", 0, true);
        p.AddEdge("shutterenable", 0, true);
        p.DownPulse((int)Parameters["Frame0Trigger"], 0, (int)Parameters["Frame0TriggerDuration"], "CameraTrigger");
        p.DownPulse((int)Parameters["Frame1Trigger"], 0, (int)Parameters["Frame1TriggerDuration"], "CameraTrigger");

        p.AddEdge("aom2enable", 119000, false);//turn off Zeeman beam to measure lifetime.
        p.AddEdge("aom3enable", 199000, false);
        p.AddEdge("aom1enable", 199000, false);
        p.DownPulse((int)Parameters["Frame2Trigger"], 0, (int)Parameters["Frame2TriggerDuration"], "CameraTrigger");

        p.DownPulse(210000, 0, 50, "CameraTrigger");
        p.DownPulse(215000, 0, 50, "CameraTrigger");

        return(p);
    }
Exemplo n.º 29
0
    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);
    }
Exemplo n.º 30
0
    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, 20000, "bXSlowingShutter");                                                      //Takes 14ms to start closing

        p.Pulse(patternStartBeforeQ, (int)Parameters["Frame0Trigger"], (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); //camera trigger for first frame
        p.Pulse(patternStartBeforeQ, (int)Parameters["Frame1Trigger"], (int)Parameters["Frame0TriggerDuration"], "cameraTrigger"); //camera trigger for second frame


        return(p);
    }