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)
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)