示例#1
0
    def _Calculate_spectrum_fired(self):
        # delete values from previous measurement
        self.delete_all_values()

        # load data
        rabi_x, rabi_y, unused1, unused2 = self.load_file(self.rabi_file)
        xy8_x, xy8_y, xy8_xx, xy8_yy = self.load_file(self.xy8_file)
        # performing rabi-fit
        rabi_fit_parameters = self.rabi_fit(rabi_x, rabi_y)
        rabi_contrast = 200 * rabi_fit_parameters[0] / rabi_fit_parameters[3]
        rabi_period = rabi_fit_parameters[1] / 1e3  # /1e3 gives us nanoseconds
        rabi_amplitude = rabi_fit_parameters[0]
        rabi_level = rabi_fit_parameters[3]
        print 'rabi_level: ', rabi_level
        # plotting rabi + rabi-fit
        rabi_y = np.array(rabi_y) / 1e3
        self.y_rabi_lo = min(rabi_y) - 0.02
        self.y_rabi_hi = max(rabi_y) + 0.02
        rabi_fit_y = Fit.Cosinus_dec(*rabi_fit_parameters)(rabi_x) / 1e3
        self._plot_rabi_changed(rabi_x, rabi_y, rabi_fit_y)
        # plotting yx8-data
        self._plot_xy8_changed(xy8_x, xy8_y, xy8_yy)
        # decide if rabi-level or xy8-level (if alternating)
        level = rabi_level
        if xy8_yy != []:
            xy8_level = ((np.array(xy8_y) + np.array(xy8_yy)) / 2).mean()
            level = xy8_level
            print 'xy8_level: ', xy8_level
        # performing xy8 to rabi normalization
        xy8norm_x = xy8_x
        xy8norm_y = Calculate.do_normalization(xy8_y, rabi_amplitude, level)
        xy8norm_yy = []
        if xy8_yy != []:
            xy8norm_yy = Calculate.do_normalization(xy8_yy, rabi_amplitude,
                                                    level)
        # plotting xy8norm
        self._plot_xy8norm_changed(xy8norm_x, xy8norm_y, xy8norm_yy)
        # calculating the spectral density
        nu = Calculate.nu_from_tau(
            xy8norm_x)  #this nu is in MHz, since xy8norm_x is in µs
        gamma_e = 1  #setting gamma_e to 1
        tau_x = np.array(xy8norm_x) / 1e6  #tau_x is in seconds
        if xy8_yy == []:
            temp = float(sum(xy8norm_y) / len(xy8norm_y))
            if temp < 0.5:
                xy8norm_y = 1 - xy8norm_y
        spectrum_y = Calculate.S_from_data(tau_x, xy8norm_y, gamma_e,
                                           self.Number_pulses)
        spectrum_y = np.array(spectrum_y) / 1e6  #to change to MHz
        spectrum_yy = []
        if xy8_yy != []:
            xy8norm_yy = 1 - xy8norm_yy
            spectrum_yy = Calculate.S_from_data(tau_x, xy8norm_yy, gamma_e,
                                                self.Number_pulses)
            spectrum_yy = np.array(spectrum_yy) / 1e6  #to change to MHz
        # plotting the spectral density
        self.spec_min = min(nu)
        self.spec_max = max(nu)
        self._plot_density_changed(nu, spectrum_y, spectrum_yy)
        # saving nu and spectra, to use them in Calculate_depth
        self.nu = nu
        self.spectrum_y = spectrum_y
        self.spectrum_yy = spectrum_yy