Exemplo n.º 1
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.

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

        //Pump atoms into f=1 ground state
        p.AddEdge("D2EOMenable", (int)Parameters["MOTEndTime"] - (int)Parameters["D2RepumpSwitchOffTime"], 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"], false);

        //pulse on molasses light
        p.PulseSwitchable((int)Parameters["MolassesStartTime"], 0, (int)Parameters["MolassesPulseLength"], "aom2enable", (bool)Parameters["DoMolassesPulse"]);

        //optical pumping
        p.Pulse((int)Parameters["MolassesStartTime"] + (int)Parameters["MolassesPulseLength"] + (int)Parameters["VacMagTrapTime"] + (int)Parameters["ImageDelay"], (int)Parameters["OPTimedelay"], (int)Parameters["OPPulseLength"], "aom4enable");

        //Transfer to in vacuum magnetic trap

        //Imaging
        p.Pulse((int)Parameters["MolassesStartTime"] + (int)Parameters["MolassesPulseLength"] + (int)Parameters["VacMagTrapTime"] + (int)Parameters["ImageDelay"], -2, 1, "aom3enable");
        p.Pulse((int)Parameters["MolassesStartTime"] + (int)Parameters["MolassesPulseLength"] + (int)Parameters["VacMagTrapTime"] + (int)Parameters["ImageDelay"], -1, 100, "aom1enable");
        p.Pulse((int)Parameters["MolassesStartTime"] + (int)Parameters["MolassesPulseLength"] + (int)Parameters["VacMagTrapTime"] + (int)Parameters["ImageDelay"], -2, 100, "D2EOMenable");
        p.DownPulse((int)Parameters["MolassesStartTime"] + (int)Parameters["MolassesPulseLength"] + (int)Parameters["VacMagTrapTime"] + (int)Parameters["ImageDelay"], 0, 100, "CameraTrigger"); //take an image of the cloud after D1 stage

        p.Pulse((int)Parameters["Frame1Trigger"], -2, 1, "aom3enable");
        p.Pulse((int)Parameters["Frame1Trigger"], -1, 100, "aom1enable");
        p.Pulse((int)Parameters["Frame1Trigger"], -1, 100, "D2EOMenable");
        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.


        return(p);
    }
    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["MOTEndTime"], false);
        p.AddEdge("D2EOMenable", (int)Parameters["MOTEndTime"], false);

        //Imaging
        p.PulseSwitchable((int)Parameters["Frame0Trigger"], 0, 1, "aom2enable", (bool)Parameters["DoMolassesPulse"]); //pulse molasses light on while imaging
        p.Pulse((int)Parameters["Frame0Trigger"], -1, 100, "aom1enable");
        //p.Pulse((int)Parameters["Frame0Trigger"], -2, 100, "D2EOMenable");
        p.DownPulse((int)Parameters["Frame0Trigger"], 0, 100, "CameraTrigger"); //take an image of the cloud after D1 stage

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

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

        return(p);
    }