def ionization_study(name, debug = False, upload_only = False, use_yellow = False): """ Two setup experiment where LT3 does optical pi pulses only While LT4 repetitively runs the entire LDE element. """ m = sce_expm.SingleClickEntExpm(name) prepare(m) ### general params pts = 8 m.params['pts'] = pts m.params['reps_per_ROsequence'] = 1000 turn_all_sequence_elements_off(m) ### sequence specific parameters m.params['MW_during_LDE'] = 1 m.params['is_two_setup_experiment'] = 0 m.joint_params['do_final_mw_LDE'] = 0 m.params['mw_first_pulse_amp'] = 0 m.params['mw_first_pulse_length'] = 1e-9 m.params['force_repump_after_LDE'] = 1 ### prepare sweep m.params['do_general_sweep'] = True m.params['general_sweep_name'] = 'LDE_attempts' print 'sweeping the', m.params['general_sweep_name'] m.params['general_sweep_pts'] = np.linspace(5,2500,pts) m.params['sweep_name'] = m.params['general_sweep_name'] m.params['sweep_pts'] = m.params['general_sweep_pts'] m.params['do_yellow_with_AWG'] = use_yellow ### upload and run run_sweep(m,debug = debug,upload_only = upload_only)
def LDE_decouple_time_compressed_BK(name, debug = False, upload_only = False): """ This measurement sweeps the phase of the last pi/2 pulse and includes MW pulses in the LDE element. Is used as a sanity check --> how coherent are we at the last pi/2 pulse and what is the phase relation for the MW source. """ m = sce_expm.SingleClickEntExpm(name) prepare(m) ### general params pts = 21 m.params['pts'] = pts m.params['reps_per_ROsequence'] = 500 turn_all_sequence_elements_off(m) ### sequence specific parameters m.params['MW_during_LDE'] = 1 m.joint_params['opt_pi_pulses'] = 0 m.joint_params['LDE_attempts'] = 1 m.joint_params['do_final_mw_LDE'] = 1 m.params['first_mw_pulse_is_pi2'] = 1 m.params['LDE_decouple_time'] = 500e-9 m.params['MW_RO_pulse_in_LDE'] = 1 m.params['LDE_final_mw_phase'] = 90 ### prepare sweep m.params['do_general_sweep'] = True m.params['general_sweep_name'] = 'LDE_decouple_time' print 'sweeping the', m.params['general_sweep_name'] m.params['general_sweep_pts'] = np.linspace(450e-9,600e-9,pts) m.params['sweep_name'] = m.params['general_sweep_name'] m.params['sweep_pts'] = m.params['general_sweep_pts'] ### upload and run run_sweep(m,debug = debug,upload_only = upload_only)
def lastpi2_phase_vs_amplitude(name, debug = False, upload_only = False): """ This measurement sweeps the phase of the last pi/2 pulse while keeping the amplitude constant. Is used as a sanity check --> are all our pi/2 pulses actually pi/2 pulses? """ m = sce_expm.SingleClickEntExpm(name) prepare(m) ### general params pts = 21 m.params['pts'] = pts m.params['reps_per_ROsequence'] = 500 turn_all_sequence_elements_off(m) ### sequence specific parameters m.params['MW_during_LDE'] = 0 m.joint_params['opt_pi_pulses'] = 0 m.joint_params['LDE_attempts'] = 1 m.joint_params['do_final_mw_LDE'] = 1 m.params['first_pulse_is_pi2'] = True ### prepare sweep m.params['do_general_sweep'] = True m.params['general_sweep_name'] = 'LDE_final_mw_phase' print 'sweeping the', m.params['general_sweep_name'] m.params['general_sweep_pts'] = np.linspace(0,180,pts) m.params['sweep_name'] = m.params['general_sweep_name'] m.params['sweep_pts'] = m.params['general_sweep_pts'] ### upload and run run_sweep(m,debug = debug,upload_only = upload_only)
def lastpi2_measure_delay(name, debug = False, upload_only = False): """ There is a finite timing offset between LDE element and the last pi/2 pulse that we do upon success. This measurement sweeps the timing of the last pi/2 to determine the best position. """ m = sce_expm.SingleClickEntExpm(name) prepare(m) ### general params pts = 21 m.params['pts'] = 1#pts m.params['reps_per_ROsequence'] = 500 turn_all_sequence_elements_off(m) ### sequence specific parameters m.params['MW_during_LDE'] = 1 m.joint_params['opt_pi_pulses'] = 0 m.joint_params['LDE_attempts'] = 1 m.joint_params['do_final_mw_LDE'] = 1 m.params['first_mw_pulse_is_pi2'] = True m.params['LDE_final_mw_phase'] = 90 ### prepare sweep m.params['do_general_sweep'] = True m.params['general_sweep_name'] = 'MW_final_delay_offset' print 'sweeping the', m.params['general_sweep_name'] m.params['general_sweep_pts'] = np.array([10e-9])#np.linspace(-0.01e-6,0.01e-6,pts) m.params['sweep_name'] = m.params['general_sweep_name'] m.params['sweep_pts'] = m.params['general_sweep_pts']*1e9 ### upload and run run_sweep(m,debug = debug,upload_only = upload_only)
def dynamical_decoupling_sweep_tau(name, debug = False, upload_only = False): """ Sweeps tau at a fixed number of decoupling repetitions """ m = sce_expm.SingleClickEntExpm(name+'_sweep_decoupling') prepare(m) ### general params sweep_pts = np.arange(8.0e-6,9.0e-6,20e-9) pts = len(sweep_pts) m.params['pts'] = pts m.params['reps_per_ROsequence'] = 250 m.joint_params['opt_pi_pulses'] = 0 ### sequence specific parameters turn_all_sequence_elements_off(m) m.joint_params['LDE_attempts'] = 1 m.params['LDE_final_mw_phase'] = 90 m.params['do_dynamical_decoupling'] = 1 m.params['MW_during_LDE'] = 1 m.joint_params['do_final_mw_LDE'] = 1 m.params['max_decoupling_reps'] = 7 m.params['dynamic_decoupling_N'] = 4 m.params['tomography_basis'] = 'X' m.params['first_mw_pulse_is_pi2'] = True ### sweep m.params['do_general_sweep'] = True m.params['general_sweep_name'] = 'dynamic_decoupling_tau' print 'sweeping the', m.params['general_sweep_name'] m.params['general_sweep_pts'] = sweep_pts m.params['sweep_name'] = 'tau (us)' #m.params['general_sweep_name'] m.params['sweep_pts'] = m.params['general_sweep_pts']*1e6 run_sweep(m,debug = debug,upload_only = upload_only)
def ionization_non_local(name, debug = False, upload_only = False, use_yellow = False): """ Two setup experiment where LT3 does optical pi pulses only While LT4 repetitively runs the entire LDE element. """ m = sce_expm.SingleClickEntExpm(name) prepare(m) ### general params pts = 3 m.params['pts'] = pts m.params['reps_per_ROsequence'] = 250 turn_all_sequence_elements_off(m) ### sequence specific parameters m.params['MW_during_LDE'] = 1 m.params['is_two_setup_experiment'] = 1 m.joint_params['do_final_mw_LDE'] = 0 # m.params['first_pulse_is_pi2'] = True # m.params['mw_first_pulse_amp'] = 0 ### prepare sweep if qt.current_setup == 'lt3': # m.params['do_only_opt_pi'] = 1 m.joint_params['opt_pi_pulses'] = 1 m.params['mw_first_pulse_amp'] = 0 m.params['Hermite_pi_amp'] = 0 m.params['Hermite_pi2_amp'] = 0 m.params['do_general_sweep'] = True m.params['general_sweep_name'] = 'LDE_attempts' print 'sweeping the', m.params['general_sweep_name'] m.params['general_sweep_pts'] = np.linspace(1,500,pts) m.params['sweep_name'] = m.params['general_sweep_name'] m.params['sweep_pts'] = m.params['general_sweep_pts'] m.params['do_yellow_with_AWG'] = use_yellow ### upload and run run_sweep(m,debug = debug,upload_only = upload_only)
def check_for_projective_noise(name, debug=False, upload_only=False): """ This measurement adds a pi pulse to take the NV dark, then optical pi, then immediately pi/2. Used to check for projective noise. """ m = sce_expm.SingleClickEntExpm(name) sweep_sce_expm.prepare(m) ### general params pts = 21 m.params['pts'] = pts m.params['reps_per_ROsequence'] = 1500 sweep_sce_expm.turn_all_sequence_elements_off(m) ### sequence specific parameters m.params['MW_during_LDE'] = 1 m.joint_params['opt_pi_pulses'] = 1 m.joint_params['LDE_attempts'] = 400 m.joint_params['do_final_mw_LDE'] = 1 m.params['first_mw_pulse_is_pi2'] = True m.params['check_EOM_projective_noise'] = 1 m.params['MW_opt_puls1_separation'] = 120e-9 - 200e-9 # m.joint_params['LDE_element_length'] = 5e-6 m.params['LDE_final_mw_phase'] = 90.0 m.params['is_two_setup_experiment'] = 1 ### prepare sweep m.params['do_general_sweep'] = True m.params['general_sweep_name'] = 'MW_opt_puls1_separation' print 'sweeping the', m.params['general_sweep_name'] m.params['general_sweep_pts'] = m.params[ 'MW_opt_puls1_separation'] + np.linspace(-40e-9, 100e-9, pts) m.params['sweep_name'] = m.params['general_sweep_name'] m.params['sweep_pts'] = m.params['general_sweep_pts'] ### upload and run sweep_sce_expm.run_sweep(m, debug=debug, upload_only=upload_only)
def dynamical_decoupling_after_LDE(name, debug = False, upload_only = False): """ Sweeps the number of pulses in the decoupling sequence. Calibration msmt. for entnaglement on demand """ m = sce_expm.SingleClickEntExpm(name+'_sweep_decoupling') prepare(m) ### general params pts =11 m.params['pts'] = pts m.params['reps_per_ROsequence'] = 200 ### sequence specific parameters turn_all_sequence_elements_off(m) m.params['MW_during_LDE'] = 1 m.joint_params['do_final_mw_LDE'] = 1 m.params['first_mw_pulse_is_pi2'] = True m.params['do_dynamical_decoupling_AWG_only'] = 1 m.params['do_dynamical_decoupling'] = 0 ### lets the adwin count along! m.joint_params['LDE_attempts'] = 1 ## don't put this to 1. will give problems m.params['LDE_final_mw_phase'] = -90 m.joint_params['opt_pi_pulses'] = 0 m.params['tomography_basis'] = 'X' m.params['dynamic_decoupling_tau'] = m.params['dynamic_decoupling_tau'] ### sweep m.params['do_general_sweep'] = True m.params['general_sweep_name'] = 'max_decoupling_reps' print 'sweeping the', m.params['general_sweep_name'] m.params['general_sweep_pts'] = np.round(np.linspace(2,400,pts)) m.params['sweep_name'] = 'Decoupling time (ms)'#m.params['general_sweep_name'] m.params['sweep_pts'] = m.params['decoupling_element_duration']*m.params['general_sweep_pts']*1e3 run_sweep(m,debug = debug,upload_only = upload_only)