예제 #1
0
 def _open_laser(self):
     if self.red == 'on':
         ha.LaserRed().on()
         time.sleep(7.0)
         self.red_monitor = ha.LaserRed().check_status()
     elif self.red == 'off':
         ha.LaserRed().off()
         time.sleep(1.0)
         self.red_monitor = ha.LaserRed().check_status()
예제 #2
0
 def __init__(self):
     super(PLE, self).__init__()
     self._create_line_plot()
     self._create_single_line_plot()
     self._create_matrix_plot()
     self.on_trait_change(self._update_index,
                          'detuning_mesh',
                          dispatch='ui')
     self.on_trait_change(self._update_line_data_value,
                          'counts',
                          dispatch='ui')
     self.on_trait_change(self._update_single_line_data_value,
                          'single_line_counts',
                          dispatch='ui')
     self.on_trait_change(self._update_matrix_data_value,
                          'counts_matrix',
                          dispatch='ui')
     self.on_trait_change(self._update_matrix_data_index,
                          'n_lines,detuning',
                          dispatch='ui')
     self.red_monitor = ha.LaserRed().check_status()
     self.red = self.red_monitor
     ha.LaserRed().set_output(self.current, self.wavelength)
     self.wavelength_monitor = ha.LaserRed().get_wavelength()
     self.current_monitor = ha.LaserRed().get_current()
     self.power_monitor = ha.LaserRed().get_power()
     self.detuning_monitor = ha.LaserRed().get_detuning()
예제 #3
0
    def _run(self):

        try:
            self.state = 'run'
            self.apply_parameters()

            if self.run_time >= self.stop_time:
                self.state = 'done'
                return

            n = len(self.detuning_mesh)

            self.red_monitor = ha.LaserRed().check_status()
            if self.red_monitor == 'off':
                ha.LaserRed().on()
                time.sleep(7.0)
                self.red_monitor = ha.LaserRed().check_status()
            #ha.LaserRed().set_output(self.current, self.wavelength)
            ha.Microwave().setOutput(self.mw_power, self.mw_frequency)
            time.sleep(0.5)

            if self.switch == 'scan wave':
                ha.LaserRed().scan(self.scan_begin, self.scan_end,
                                   self.scan_rate)
                self.wavelength_monitor = ha.LaserRed().get_wavelength()
                self.detuning_monitor = ha.LaserRed().get_detuning()

            while self.run_time < self.stop_time:

                start_time = time.time()
                if threading.currentThread().stop_request.isSet():
                    break

                if self.green == 'pulse':
                    if self.mw == 'on':
                        ha.PulseGenerator().Continuous(
                            ['mw', 'mw_x', 'red', 'green'])
                    else:
                        ha.PulseGenerator().Continuous(['red', 'green'])

                time.sleep(self.green_length)

                if self.mw == 'on' and self.green == 'on':
                    ha.PulseGenerator().Continuous(
                        ['green', 'mw', 'mw_x', 'red'])
                elif self.mw == 'off' and self.green == 'on':
                    ha.PulseGenerator().Continuous(['green', 'red'])
                elif self.mw == 'on' and (self.green == 'off'
                                          or self.green == 'pulse'):
                    ha.PulseGenerator().Continuous(['mw', 'mw_x', 'red'])
                elif self.mw == 'off' and (self.green == 'off'
                                           or self.green == 'pulse'):
                    ha.PulseGenerator().Continuous(['red'])

                if self.lock_box:
                    #voltage = ha.LaserRed()._detuning_to_voltage(self.detuning_end)
                    step = (self.detuning_begin - self.detuning_end) / float(
                        self.number_points)
                    detuning_mesh = np.arange(self.detuning_end,
                                              self.detuning_begin, step)
                    counts = ha.LaserRed().piezo_scan(detuning_mesh,
                                                      self.seconds_per_point)
                    junk = ha.LaserRed().piezo_scan(self.detuning_mesh,
                                                    self.seconds_per_point)
                    self.single_line_counts = counts
                    self.counts += counts
                    self.trait_property_changed('counts', self.counts)
                    self.counts_matrix = np.vstack(
                        (counts, self.counts_matrix[:-1, :]))
                    time.sleep(0.1)
                else:

                    counts = ha.LaserRed().piezo_scan(self.detuning_mesh,
                                                      self.seconds_per_point)

                    #ha.LaserRed().set_detuning(self.detuning_begin)
                    #time.sleep(0.1)

                    self.run_time += time.time() - start_time
                    self.single_line_counts = counts
                    self.counts += counts
                    self.trait_property_changed('counts', self.counts)
                    self.counts_matrix = np.vstack(
                        (counts, self.counts_matrix[:-1, :]))
                    """ return to origin
                    """
                    voltage = ha.LaserRed()._detuning_to_voltage(
                        self.detuning_end)
                    junks = ha.LaserRed().ni_task.line(
                        np.arange(voltage, -3.0,
                                  ha.LaserRed()._detuning_to_voltage(-0.1)),
                        0.001)
                    ha.LaserRed().ni_task.point(-3.0)

                    voltage = ha.LaserRed()._detuning_to_voltage(
                        self.detuning_begin)
                    if voltage > -2.90:
                        junks = ha.LaserRed().ni_task.line(
                            np.arange(-3.0, voltage,
                                      ha.LaserRed()._detuning_to_voltage(0.1)),
                            0.001)
                        ha.LaserRed().ni_task.point(voltage)
                    time.sleep(0.1)

                    self.wavelength_monitor = ha.LaserRed().get_wavelength()
                    self.detuning_monitor = ha.LaserRed().get_detuning()

            if self.run_time < self.stop_time:
                self.state = 'idle'
            else:
                self.state = 'done'
            if self.switch == 'scan wave':
                ha.LaserRed().stop_scan()

            ha.LaserRed().set_detuning(self.detuning)
            #ha.Microwave().setOutput(None, self.mw_frequency)
            if self.light == 'light':
                ha.PulseGenerator().Light()
                ha.Microwave().setOutput(None, self.mw_frequency)
            elif self.off_red == 'on':
                if self.off_green == 'on' and self.off_mw == 'on':
                    ha.PulseGenerator().Continuous(
                        ['mw', 'mw_x', 'red', 'green'])
                elif self.off_green == 'off' and self.off_mw == 'on':
                    ha.PulseGenerator().Continuous(['mw', 'mw_x', 'red'])
                elif self.off_green == 'on' and self.off_mw == 'off':
                    ha.Microwave().setOutput(None, self.mw_frequency)
                    ha.PulseGenerator().Continuous(['red', 'green'])
                elif self.off_green == 'off' and self.off_mw == 'off':
                    ha.Microwave().setOutput(None, self.mw_frequency)
                    ha.PulseGenerator().Continuous(['red'])
            else:
                ha.Microwave().setOutput(None, self.mw_frequency)
                ha.PulseGenerator().Night()

        except:
            logging.getLogger().exception('Error in PLE.')
            self.state = 'error'
예제 #4
0
 def _detuning_changed(self, detuning):
     """React to set laser button. Submit the Job."""
     if self.go_detuning:
         ha.LaserRed().set_detuning(detuning)
         self.detuning_monitor = ha.LaserRed().get_detuning()
예제 #5
0
 def _set_laser(self):
     """React to set laser button. Submit the Job."""
     ha.LaserRed().set_output(self.current, self.wavelength)
     self.wavelength_monitor = ha.LaserRed().get_wavelength()
     self.current_monitor = ha.LaserRed().get_current()
     self.power_monitor = ha.LaserRed().get_power()
예제 #6
0
 def _resubmit_button_fired(self):
     """React to start button. Submit the Job."""
     if self.switch == 'scan wave':
         ha.LaserRed().resume_scan()
     self.resubmit()