def sweep_meas_strength(lt1=False,
                        name=meas_name,
                        nr_of_MW_pulses=1,
                        nr_of_datapoints=2,
                        reps=1500,
                        RO_reps=1,
                        do_shel=False,
                        init_line='-1',
                        RO_line='-1'):
    datafolder = 'D:/measuring/data/'
    date = dtime.strftime('%Y') + dtime.strftime('%m') + dtime.strftime('%d')
    datapath = datafolder + date + '/'

    m = MBI.MBI(name)
    m.setup(lt1)

    reps_per_datap = reps
    m.nr_of_datapoints = nr_of_datapoints
    m.nr_of_RO_steps = RO_reps

    print m.nr_of_RO_steps

    strength = np.linspace(0, 90, nr_of_datapoints)
    m.do_shelv_pulse = do_shel
    m.do_incr_RO_steps = 0

    m.MBI_mod_freq = MBI.get_freq(m, init_line) * np.ones(nr_of_datapoints)
    m.MW_sel_mod_freq = MBI.get_freq(m, RO_line) * np.ones(nr_of_datapoints)
    m.MW_nsel_mod_freq = (MBI.get_freq(
        m, RO_line) - exp.sil9['hf_splitting'] / 2) * np.ones(nr_of_datapoints)

    m.MWdic = {}
    m.MWdic['meas_theta'] = strength * np.ones(nr_of_datapoints)
    m.MWdic['CORPSE_nsel_frabi'] = exp.pulses['CORPSE_nsel_frabi'] * np.ones(
        nr_of_datapoints)
    m.MWdic['CORPSE_nsel_amp'] = exp.pulses['CORPSE_nsel_amp'] * np.ones(
        nr_of_datapoints)
    m.MWdic['CORPSE_freq'] = m.MW_nsel_mod_freq * np.ones(nr_of_datapoints)
    m.MWdic['sel_amp'] = exp.pulses['sel_amp'] * np.ones(nr_of_datapoints)
    m.MWdic['sel_frabi'] = exp.pulses['sel_frabi'] * np.ones(nr_of_datapoints)
    m.MWdic['RO_line'] = m.MW_sel_mod_freq * np.ones(nr_of_datapoints)

    print 'init on mI = ', init_line, m.MBI_mod_freq
    print 'pulses on mI = ', RO_line, m.MWdic['RO_line']

    m.par['sweep_par'] = strength / 90.
    m.par['sweep_par_name'] = 'measurement strength A.U.'
    m.par['RO_repetitions'] = int(len(m.par['sweep_par']) * reps_per_datap)

    m.load_MWseq_func = MBIseq.add_weak_meas
    #    m.start_measurement (m.generate_MW_sweep_sequence)
    m.start_measurement(MBIseq.MW_sweep)
    dp = MBI.get_datapath()
    path = lde_calibration.find_newest_data(dp, string=name)
    spin_control.plot_data_MBI(path)
def Weak_strong_meas(lt1=False,
                     name='SIL9_lt2_weak_value',
                     tau=np.array([1., 90.]),
                     nr_of_pulses=1,
                     nr_of_datapoints=16,
                     reps=500,
                     RO_reps=2,
                     do_shel=True,
                     CORPSE=True,
                     init_line='-1',
                     MW_line='0-1',
                     RO_basis='X',
                     init_rot=1):

    datafolder = 'D:/measuring/data/'
    date = dtime.strftime('%Y') + dtime.strftime('%m') + dtime.strftime('%d')
    datapath = datafolder + date + '/'

    m = MBI.MBI(name)
    m.setup(lt1)

    reps_per_datap = reps
    m.nr_of_datapoints = nr_of_datapoints
    m.nr_of_RO_steps = RO_reps
    print m.nr_of_RO_steps

    #min_tau = 1.
    #max_tau = 217.
    #tau=np.linspace(min_tau,max_tau,nr_of_datapoints)

    m.do_shelv_pulse = do_shel * np.ones(RO_reps)
    m.do_shelv_pulse[RO_reps - 1] = 1
    print m.do_shelv_pulse
    postselect_pulse = True
    m.do_incr_RO_steps = 0

    m.MBI_mod_freq = MBI.get_freq(m, init_line) * np.ones(nr_of_datapoints)
    if RO_basis == 'Z':
        do_rot = 0
    else:
        do_rot = 1
    if RO_basis == 'Y':
        RO_phase = 90
    else:
        RO_phase = 0

    #tauF =100.*np.ones(nr_of_datapoints)
    tauF = tau

    # first pi/2 pulse
    m.MWdic_last = {}
    m.MWdic = {}
    m.MWdic_last['nr_of_MW_pulses'] = 1 * np.ones(nr_of_datapoints)
    m.MWdic_last['MW_pulse_amp'] = m.pulsedic['pi2_amp'] * np.ones(
        nr_of_datapoints)
    m.MWdic_last['MW_pulse_len'] = m.pulsedic['pi2_len'] * np.ones(
        nr_of_datapoints)
    m.MWdic_last['tau'] = tauF
    m.MWdic_last['weak'] = True * np.ones(nr_of_datapoints)
    m.MWdic_last['phase'] = 90. * np.ones(nr_of_datapoints)
    m.MWdic_last['finalwait_dur'] = 2000. * np.ones(
        nr_of_datapoints)  #MBIcfg['wait_time_before_MBI_pulse']
    m.MWdic_last['MW_mod_freq'] = MBI.get_freq(
        m, MW_line) * np.ones(nr_of_datapoints)

    #RF
    m.MWdic_last['RF_pulse_amp'] = init_rot * m.pulsedic[
        'RF_pi2_amp'] * np.ones(nr_of_datapoints)
    m.MWdic_last['RF_pulse_len'] = m.pulsedic['RF_pi2_len'] * np.ones(
        nr_of_datapoints)
    m.MWdic_last['RF_phase'] = 0 * np.ones(nr_of_datapoints)
    m.MWdic_last['RF_freq'] = exp.sil9['mI_m1_freq'] * np.ones(
        nr_of_datapoints)
    m.MWdic['RF_pulse_amp'] = 0 * np.ones(nr_of_datapoints)
    m.MWdic['RF_pulse_len'] = 0 * np.ones(nr_of_datapoints)
    m.MWdic['RF_freq'] = 0 * exp.sil9['mI_m1_freq'] * np.ones(nr_of_datapoints)
    m.MWdic['RF_phase'] = 0 * np.ones(nr_of_datapoints)
    #m.MWdic_last['final_shelving']=True*np.ones(nr_of_datapoints)
    #basisrot=m.pulsedic['RF_pi2_len']*np.ones(nr_of_datapoints)

    #WM postselection
    #min_theta=6
    minTau = 12.
    # get from ramsey contrast at tau=0 ns
    rot_angle = np.mod(2 * 0.5 * np.arcsin(
        np.cos(np.pi * exp.sil9['hf_splitting'] * 1e-9 * (tau + minTau))),
                       2 * np.pi)  #0.5
    #rot_angle = (np.pi/2.)*np.ones(nr_of_datapoints)
    basisrot = rot_angle * exp.pulses['RF_pi2_len'] / (np.pi / 2.)
    #basisrot = (tau/90.)*exp.pulses['RF_pi2_len']
    #basisrot = exp.pulses['RF_pi2_len']*np.ones(nr_of_datapoints)

    #m.pulsedic['RF_pi2_len'] = basisrot
    # second RF (basis rot)
    m.MWdic_last['RF2_pulse_amp'] = do_rot * m.pulsedic[
        'RF_pi2_amp'] * np.ones(nr_of_datapoints)
    m.MWdic_last[
        'RF2_pulse_len'] = basisrot  #m.pulsedic['RF_pi2_len']*np.ones(nr_of_datapoints)
    m.MWdic_last['RF2_freq'] = exp.sil9['mI_m1_freq'] * np.ones(
        nr_of_datapoints)
    #m.MWdic_last['RF2_phase'] =102*np.ones(nr_of_datapoints)#(RO_phase+85)-tau*180*exp.sil9['hf_splitting']*1e-9 #
    m.MWdic_last['RF2_phase'] = (102. -
                                 tauF * 180 * exp.sil9['hf_splitting'] * 1e-9
                                 )  #*np.ones(nr_of_datapoints)
    # third RF (other basis rot)
    m.MWdic_last['RF3_pulse_amp'] = do_rot * m.pulsedic[
        'RF_pi2_amp'] * np.ones(nr_of_datapoints)
    m.MWdic_last[
        'RF3_pulse_len'] = basisrot  #m.pulsedic['RF_pi2_len']*np.ones(nr_of_datapoints)#basisrot
    m.MWdic_last['RF3_freq'] = exp.sil9['mI_m1_freq'] * np.ones(
        nr_of_datapoints)
    #m.MWdic_last['RF3_phase'] = RO_phase+10-tau*180*exp.sil9['hf_splitting']*1e-9#0*np.ones(nr_of_datapoints)
    #phase offset for non pi/2 pulse RF1
    m.MWdic_last['RF3_phase'] = np.fmod(
        30. - tauF * 180 * exp.sil9['hf_splitting'] * 1e-9 -
        2 * 180 * exp.sil9['hf_splitting'] *
        (basisrot - m.pulsedic['RF_pi2_len']) * 1e-9, 360)

    # Second pi/2 pulse
    m.MWdic['nr_of_MW_pulses'] = 1 * np.ones(nr_of_datapoints)
    m.MWdic['MW_pulse_amp'] = m.pulsedic['pi2_amp'] * np.ones(nr_of_datapoints)
    m.MWdic['MW_pulse_len'] = m.pulsedic['pi2_len'] * np.ones(nr_of_datapoints)
    m.MWdic['tau'] = 217 * np.ones(nr_of_datapoints)
    m.MWdic['phase'] = 90. * np.ones(nr_of_datapoints)
    m.MWdic['finalwait_dur'] = 2000. * np.ones(
        nr_of_datapoints)  #MBIcfg['wait_time_before_MBI_pulse']
    m.MWdic['MW_mod_freq'] = MBI.get_freq(m,
                                          MW_line) * np.ones(nr_of_datapoints)
    m.MBI_mod_freq = MBI.get_freq(m, init_line) * np.ones(nr_of_datapoints)

    # in case of CORPSE pulses
    m.MWdic['CORPSE_amp'] = m.pulsedic['CORPSE_nsel_amp'] * np.ones(
        nr_of_datapoints)
    m.MWdic['CORPSE_frabi'] = m.pulsedic['CORPSE_nsel_frabi'] * np.ones(
        nr_of_datapoints)
    m.MWdic_last['CORPSE_amp'] = m.MWdic['CORPSE_amp']
    m.MWdic_last['CORPSE_frabi'] = m.MWdic['CORPSE_frabi']
    m.MWdic['freq'] = m.MWdic_last['MW_mod_freq']
    m.MWdic_last['freq'] = m.MWdic['freq']
    #set laser powers
    m.Ex_final_RO_amplitude = m.ssrodic['Ex_RO_amplitude']
    m.A_final_RO_amplitude = 0.
    m.Ex_RO_amplitude = m.ssrodic['Ex_RO_amplitude']
    m.A_RO_amplitude = 0.
    m.RO_duration = m.MBIdic['weak_RO_duration']
    m.final_RO_duration = m.ssrodic['RO_duration']

    print 'init on mI = ', init_line, m.MBI_mod_freq
    print 'RO on mI = ', MW_line, m.MWdic['MW_mod_freq']

    m.par['sweep_par'] = tau
    m.par['sweep_par_name'] = 'phase (degree)'
    m.par['RO_repetitions'] = int(len(m.par['sweep_par']) * reps_per_datap)

    #STRONG READOUT!!!!
    # second RF (basis rot)
    m.MWdic['RF2_pulse_amp'] = 0 * m.pulsedic['RF_pi2_amp'] * np.ones(
        nr_of_datapoints)
    m.MWdic['RF2_pulse_len'] = m.pulsedic['RF_pi2_len'] * np.ones(
        nr_of_datapoints)
    m.MWdic['RF2_freq'] = exp.sil9['mI_m1_freq'] * np.ones(nr_of_datapoints)
    m.MWdic['RF2_phase'] = np.ones(nr_of_datapoints)
    # third RF (other basis rot)
    #If RF3 is commented out: no pi pulses after strong readout
    #m.MWdic['RF3_pulse_amp'] = 0*m.pulsedic['RF_pi2_amp']*np.ones(nr_of_datapoints)
    m.MWdic['RF3_pulse_len'] = m.pulsedic['RF_pi2_len'] * np.ones(
        nr_of_datapoints)
    m.MWdic['RF3_freq'] = exp.sil9['mI_m1_freq'] * np.ones(nr_of_datapoints)
    m.MWdic['RF3_phase'] = np.ones(nr_of_datapoints)

    if CORPSE:
        m.load_MWseq_func = MBIseq.ramsey_CORPSE
        m.load_MWseq_func_last = MBIseq.ramsey_CORPSE

#if postselect_pulse:
#            m.load_MWseq_func_last=MBIseq.MBI_element
    else:
        m.load_MWseq_func = MBIseq.ramsey
        m.load_MWseq_func_last = MBIseq.ramsey
    m.start_measurement(MBIseq.MW_sweep)
    dp = MBI.get_datapath()
    path = lde_calibration.find_newest_data(dp, string=name)
    spin_control.plot_data_MBI(path)
Ejemplo n.º 3
0
def Weak_strong_meas(lt1=False,
                     name='SIL9_lt2_RF2',
                     min_tau=1.,
                     max_tau=217.,
                     nr_of_pulses=1,
                     nr_of_datapoints=11,
                     reps=2000,
                     RO_reps=2,
                     do_shel=True,
                     CORPSE=True,
                     init_line='minY',
                     MW_line='0-1',
                     RO_rot='X'):

    datafolder = 'D:/measuring/data/'
    date = dtime.strftime('%Y') + dtime.strftime('%m') + dtime.strftime('%d')
    datapath = datafolder + date + '/'

    m = MBI.MBI(name)
    m.setup(lt1)

    reps_per_datap = reps
    m.nr_of_datapoints = nr_of_datapoints
    m.nr_of_RO_steps = RO_reps
    print m.nr_of_RO_steps
    tau = np.linspace(min_tau, max_tau, nr_of_datapoints)
    #tau=np.insert(tau,0,0)
    #theta =
    m.do_shelv_pulse = do_shel * np.ones(RO_reps)
    m.do_shelv_pulse[RO_reps - 1] = 0
    print m.do_shelv_pulse
    postselect_pulse = True
    m.do_incr_RO_steps = 0

    m.MBI_mod_freq = MBI.get_freq(m, '-1') * np.ones(nr_of_datapoints)
    if RO_rot == 'Z':
        do_rot = 0
    else:
        do_rot = 1
    if RO_rot == 'Y':
        RO_phase = 90
    else:
        RO_phase = 0

    if init_line == '-1':
        rf1amp = 0
        rf1len = m.pulsedic['RF_pi2_len']
        rf1phase = 0.
    if init_line == '0':
        rf1amp = m.pulsedic['RF_pi_amp']
        rf1len = m.pulsedic['RF_pi_len']
        rf1phase = 0.
    if init_line == 'X':
        rf1amp = m.pulsedic['RF_pi2_amp']
        rf1len = m.pulsedic['RF_pi2_len']
        rf1phase = 90.
    if init_line == 'minX':
        rf1amp = m.pulsedic['RF_pi2_amp']
        rf1len = m.pulsedic['RF_pi2_len']
        rf1phase = 270.
    if init_line == 'minY':
        rf1amp = m.pulsedic['RF_pi2_amp']
        rf1len = m.pulsedic['RF_pi2_len']
        rf1phase = 0.
    if init_line == 'Y':
        rf1amp = m.pulsedic['RF_pi2_amp']
        rf1len = m.pulsedic['RF_pi2_len']
        rf1phase = 180.

    # first pi/2 pulse
    m.MWdic_last = {}
    m.MWdic = {}
    m.MWdic_last['nr_of_MW_pulses'] = 1 * np.ones(nr_of_datapoints)
    m.MWdic_last['MW_pulse_amp'] = m.pulsedic['pi2_amp'] * np.ones(
        nr_of_datapoints)
    m.MWdic_last['MW_pulse_len'] = m.pulsedic['pi2_len'] * np.ones(
        nr_of_datapoints)
    m.MWdic_last['tau'] = tau  #(1.)*np.ones(nr_of_datapoints)
    m.MWdic_last['weak'] = True * np.ones(nr_of_datapoints)
    m.MWdic_last['phase'] = 90. * np.ones(nr_of_datapoints)
    m.MWdic_last['finalwait_dur'] = 2000. * np.ones(
        nr_of_datapoints)  #MBIcfg['wait_time_before_MBI_pulse']
    m.MWdic_last['MW_mod_freq'] = MBI.get_freq(
        m, MW_line) * np.ones(nr_of_datapoints)

    #RF
    m.MWdic_last['RF_pulse_amp'] = rf1amp * np.ones(nr_of_datapoints)
    m.MWdic_last['RF_pulse_len'] = rf1len * np.ones(nr_of_datapoints)
    m.MWdic_last['RF_phase'] = rf1phase * np.ones(nr_of_datapoints)
    m.MWdic_last['RF_freq'] = exp.sil9['mI_m1_freq'] * np.ones(
        nr_of_datapoints)
    m.MWdic['RF_pulse_amp'] = 0 * np.ones(nr_of_datapoints)
    m.MWdic['RF_pulse_len'] = 0 * np.ones(nr_of_datapoints)
    m.MWdic['RF_freq'] = 0 * exp.sil9['mI_m1_freq'] * np.ones(nr_of_datapoints)
    m.MWdic['RF_phase'] = 0 * np.ones(nr_of_datapoints)
    #m.MWdic_last['final_shelving']=True*np.ones(nr_of_datapoints)

    #m.pulsedic['RF_pi2_len'] = basisrot
    # second RF (basis rot)
    m.MWdic_last['RF2_pulse_amp'] = do_rot * m.pulsedic[
        'RF_pi2_amp'] * np.ones(nr_of_datapoints)
    m.MWdic_last['RF2_pulse_len'] = m.pulsedic['RF_pi2_len'] * np.ones(
        nr_of_datapoints)
    m.MWdic_last['RF2_freq'] = exp.sil9['mI_m1_freq'] * np.ones(
        nr_of_datapoints)
    m.MWdic_last['RF2_phase'] = RO_phase + 102. - tau * 180 * exp.sil9[
        'hf_splitting'] * 1e-9  #NOTE 1 -> tau and RO_phase!!!
    #m.MWdic_last['RF2_phase'] =((101+180)-15*180*exp.sil9['hf_splitting']*1e-9)*np.ones(nr_of_datapoints)
    # third RF (other basis rot)

    m.MWdic_last['RF3_pulse_amp'] = do_rot * m.pulsedic[
        'RF_pi2_amp'] * np.ones(nr_of_datapoints)
    m.MWdic_last['RF3_pulse_len'] = m.pulsedic['RF_pi2_len'] * np.ones(
        nr_of_datapoints)  #basisrot
    m.MWdic_last['RF3_freq'] = exp.sil9['mI_m1_freq'] * np.ones(
        nr_of_datapoints)
    m.MWdic_last['RF3_phase'] = RO_phase + 17. - tau * 180 * exp.sil9[
        'hf_splitting'] * 1e-9  ##NOTE 1 -> tau and RO_phase!!!

    # Second pi/2 pulse
    m.MWdic['nr_of_MW_pulses'] = 1 * np.ones(nr_of_datapoints)
    m.MWdic['MW_pulse_amp'] = m.pulsedic['pi2_amp'] * np.ones(nr_of_datapoints)
    m.MWdic['MW_pulse_len'] = m.pulsedic['pi2_len'] * np.ones(nr_of_datapoints)
    m.MWdic['tau'] = 217 * np.ones(nr_of_datapoints)
    m.MWdic['phase'] = 90. * np.ones(nr_of_datapoints)
    m.MWdic['finalwait_dur'] = 2000. * np.ones(
        nr_of_datapoints)  #MBIcfg['wait_time_before_MBI_pulse']
    m.MWdic['MW_mod_freq'] = MBI.get_freq(m,
                                          MW_line) * np.ones(nr_of_datapoints)
    m.MBI_mod_freq = MBI.get_freq(m, '-1') * np.ones(nr_of_datapoints)

    # in case of CORPSE pulses
    m.MWdic['CORPSE_amp'] = m.pulsedic['CORPSE_nsel_amp'] * np.ones(
        nr_of_datapoints)
    m.MWdic['CORPSE_frabi'] = m.pulsedic['CORPSE_nsel_frabi'] * np.ones(
        nr_of_datapoints)
    m.MWdic_last['CORPSE_amp'] = m.MWdic['CORPSE_amp']
    m.MWdic_last['CORPSE_frabi'] = m.MWdic['CORPSE_frabi']
    m.MWdic['freq'] = m.MWdic_last['MW_mod_freq']
    m.MWdic_last['freq'] = m.MWdic['freq']
    #set laser powers
    m.Ex_final_RO_amplitude = m.ssrodic['Ex_RO_amplitude']
    m.A_final_RO_amplitude = 0.
    m.Ex_RO_amplitude = m.ssrodic['Ex_RO_amplitude']
    m.A_RO_amplitude = 0.
    m.RO_duration = m.MBIdic['weak_RO_duration']
    m.final_RO_duration = m.ssrodic['RO_duration']

    print 'init on mI = ', '-1', m.MBI_mod_freq
    print 'RO on mI = ', MW_line, m.MWdic['MW_mod_freq']

    m.par['sweep_par'] = tau
    m.par['sweep_par_name'] = 'tau (ns)'
    m.par['RO_repetitions'] = int(len(m.par['sweep_par']) * reps_per_datap)

    #STRONG READOUT!!!!
    # second RF (basis rot)
    m.MWdic['RF2_pulse_amp'] = 0 * m.pulsedic['RF_pi2_amp'] * np.ones(
        nr_of_datapoints)
    m.MWdic['RF2_pulse_len'] = 0 * m.pulsedic['RF_pi2_len'] * np.ones(
        nr_of_datapoints)
    m.MWdic['RF2_freq'] = exp.sil9['mI_m1_freq'] * np.ones(nr_of_datapoints)
    m.MWdic['RF2_phase'] = np.ones(nr_of_datapoints)
    # third RF (other basis rot)
    #If RF3 is commented out: no pi pulses after strong readout
    #m.MWdic['RF3_pulse_amp'] = 0*m.pulsedic['RF_pi2_amp']*np.ones(nr_of_datapoints)
    m.MWdic['RF3_pulse_len'] = m.pulsedic['RF_pi2_len'] * np.ones(
        nr_of_datapoints)
    m.MWdic['RF3_freq'] = exp.sil9['mI_m1_freq'] * np.ones(nr_of_datapoints)
    m.MWdic['RF3_phase'] = np.ones(nr_of_datapoints)

    if CORPSE:
        m.load_MWseq_func = MBIseq.ramsey_CORPSE
        m.load_MWseq_func_last = MBIseq.ramsey_CORPSE

#if postselect_pulse:
#            m.load_MWseq_func_last=MBIseq.MBI_element
    else:
        m.load_MWseq_func = MBIseq.ramsey
        m.load_MWseq_func_last = MBIseq.ramsey
    m.start_measurement(MBIseq.MW_sweep)