def generate_sequence(self, upload=True): # electron manipulation pulses T = pulse.SquarePulse(channel='MW_pulsemod', length=100e-9, amplitude=0) TIQ = pulse.SquarePulse(channel='MW_Imod', length=10e-9, amplitude=0) CORPSE_pi = pulselib.IQ_CORPSE_pulse( 'CORPSE pi-pulse', I_channel='MW_Imod', Q_channel='MW_Qmod', PM_channel='MW_pulsemod', PM_risetime=self.params['MW_pulse_mod_risetime'], frequency=self.params['CORPSE_mod_frq'], rabi_frequency=self.params['CORPSE_rabi_frequency'], amplitude=self.params['CORPSE_amp'], eff_rotation_angle=180) CORPSE_pi2 = pulselib.IQ_CORPSE_pulse( 'CORPSE pi-pulse', I_channel='MW_Imod', Q_channel='MW_Qmod', PM_channel='MW_pulsemod', PM_risetime=self.params['MW_pulse_mod_risetime'], frequency=self.params['CORPSE_mod_frq'], rabi_frequency=self.params['CORPSE_rabi_frequency'], amplitude=self.params['CORPSE_amp'], eff_rotation_angle=90) wait_1us = element.Element('1us_delay', pulsar=qt.pulsar) wait_1us.append(pulse.cp(T, length=1e-6)) sync_elt = element.Element('adwin_sync', pulsar=qt.pulsar) adwin_sync = pulse.SquarePulse(channel='adwin_sync', length=10e-6, amplitude=2) sync_elt.append(adwin_sync) elts = [] seq = pulsar.Sequence('CORPSE test') for i in range(self.params['pts']): e = element.Element('CORPSE_Pi2_Pi-{}'.format(i), pulsar=qt.pulsar, global_time=True) e.append(T) e.append(pulse.cp(CORPSE_pi2)) e.append(pulse.cp(TIQ, length=self.params['delays'][i])) e.append(pulse.cp(CORPSE_pi)) e.append(T) elts.append(e) seq.append(name='CORPSE_Pi2_Pi-{}'.format(i), wfname=e.name, trigger_wait=True) seq.append(name='sync-{}'.format(i), wfname=sync_elt.name) if upload: qt.pulsar.upload(sync_elt, wait_1us, *elts) qt.pulsar.program_sequence(seq)
def generate_sequence(self, upload=True): # electron manipulation pulses T = pulse.SquarePulse(channel='MW_pulsemod', length=10e-9, amplitude=0) CORPSE = pulselib.IQ_CORPSE_pulse( 'CORPSE pi-pulse', I_channel=self.params['cur_MW_channel'], Q_channel='dummy', PM_channel='MW_pulsemod', #second_MW_channel = 'MW_Qmod', PM_risetime=self.params['MW_pulse_mod_risetime'], amplitude=self.params['CORPSE_pi_amp'], frequency=self.params['frq_mod'], rabi_frequency=self.params['CORPSE_rabi_frequency'], pulse_delay=self.params['CORPSE_pulse_delay'], eff_rotation_angle=self.params['CORPSE_eff_rotation_angle']) CORPSE.channels.remove('dummy') wait_1us = element.Element('1us_delay', pulsar=qt.pulsar) wait_1us.append(pulse.cp(T, length=1e-6)) sync_elt = element.Element('adwin_sync', pulsar=qt.pulsar) adwin_sync = pulse.SquarePulse(channel='adwin_sync', length=10e-6, amplitude=2) sync_elt.append(adwin_sync) elts = [] for i in range(self.params['pts']): e = element.Element('CORPSE-{}'.format(i), pulsar=qt.pulsar) e.append( T, pulse.cp(CORPSE, amplitude=self.params['CORPSE_pi_sweep_amps'][i], pulse_delay=self.params['CORPSE_pulse_delays'][i])) elts.append(e) # sequence seq = pulsar.Sequence('CORPSE pi calibration') for i, e in enumerate(elts): for j in range(self.params['multiplicity']): seq.append(name=e.name + '-{}'.format(j), wfname=e.name, trigger_wait=(j == 0)) seq.append(name='wait-{}-{}'.format(i, j), wfname=wait_1us.name, repetitions=self.params['delay_reps']) seq.append(name='sync-{}'.format(i), wfname=sync_elt.name) # program AWG if upload: #qt.pulsar.upload(sync_elt, wait_1us, *elts) qt.pulsar.program_awg(seq, sync_elt, wait_1us, *elts)
def generate_sequence(self, upload=True): # electron manipulation pulses T = pulse.SquarePulse(channel='MW_pulsemod', length=100e-9, amplitude=0) CORPSE = pulselib.IQ_CORPSE_pulse( 'CORPSE pulse', I_channel='MW_Imod', Q_channel='MW_Qmod', PM_channel='MW_pulsemod', PM_risetime=self.params['MW_pulse_mod_risetime'], frequency=self.params['CORPSE_mod_frq'], rabi_frequency=self.params['CORPSE_rabi_frequency']) sync_elt = element.Element('adwin_sync', pulsar=qt.pulsar) adwin_sync = pulse.SquarePulse(channel='adwin_sync', length=10e-6, amplitude=2) sync_elt.append(adwin_sync) wait_1us = element.Element('1us_delay', pulsar=qt.pulsar) wait_1us.append(pulse.cp(T, length=1e-6)) elts = [] for i in range(self.params['pts']): e = element.Element('CORPSE-{}'.format(i), pulsar=qt.pulsar, global_time=True) e.append(T) e.append( pulse.cp(CORPSE, amplitude=self.params['CORPSE_sweep_amps'][i], eff_rotation_angle=self. params['CORPSE_effective_rotation_angles'][i])) elts.append(e) # sequence seq = pulsar.Sequence('CORPSE (any angle) calibration') for i, e in enumerate(elts): seq.append(name=e.name + '-{}'.format(i), wfname=e.name, trigger_wait=True) seq.append(name='sync-{}'.format(i), wfname=sync_elt.name) # program AWG if upload: #qt.pulsar.upload(sync_elt, *elts) qt.pulsar.program_awg(seq, sync_elt, wait_1us, *elts)
def pulse_defs_lt2(msmt): # a waiting pulse on the MW pulsemod channel msmt.T = pulse.SquarePulse(channel='MW_pulsemod', length=50e-9, amplitude=0) msmt.TIQ = pulse.SquarePulse(channel='MW_Imod', length=10e-9, amplitude=0) # some not yet specified pulse on the electron msmt.e_pulse = pulselib.MW_IQmod_pulse( 'MW pulse', I_channel='MW_Imod', Q_channel='MW_Qmod', PM_channel='MW_pulsemod', PM_risetime=msmt.params_lt2['MW_pulse_mod_risetime']) msmt.CORPSE_pi = pulselib.IQ_CORPSE_pulse( 'CORPSE pi-pulse', I_channel='MW_Imod', Q_channel='MW_Qmod', PM_channel='MW_pulsemod', PM_risetime=msmt.params_lt2['MW_pulse_mod_risetime'], frequency=msmt.params_lt2['CORPSE_pi_mod_frq'], amplitude=msmt.params_lt2['CORPSE_amp'], rabi_frequency=msmt.params_lt2['CORPSE_rabi_frequency'], eff_rotation_angle=180) msmt.CORPSE_pi2 = pulselib.IQ_CORPSE_pulse( 'CORPSE pi2-pulse', I_channel='MW_Imod', Q_channel='MW_Qmod', PM_channel='MW_pulsemod', PM_risetime=msmt.params_lt2['MW_pulse_mod_risetime'], frequency=msmt.params_lt2['CORPSE_pi2_mod_frq'], amplitude=msmt.params_lt2['CORPSE_pi2_amp'], rabi_frequency=msmt.params_lt2['CORPSE_rabi_frequency'], eff_rotation_angle=90) ### synchronizing, etc msmt.adwin_lt2_trigger_pulse = pulse.SquarePulse( channel='adwin_sync', length=5e-6, amplitude=2) #only used for calibrations!! ### LDE attempt msmt.eom_aom_pulse = pulselib.EOMAOMPulse( 'Eom Aom Pulse', eom_channel='EOM_Matisse', aom_channel='EOM_AOM_Matisse', eom_pulse_duration=msmt.params_lt2['eom_pulse_duration'], eom_off_duration=msmt.params_lt2['eom_off_duration'], eom_off_amplitude=msmt.params_lt2['eom_off_amplitude'], eom_pulse_amplitude=msmt.params_lt2['eom_pulse_amplitude'], eom_overshoot_duration1=msmt.params_lt2['eom_overshoot_duration1'], eom_overshoot1=msmt.params_lt2['eom_overshoot1'], eom_overshoot_duration2=msmt.params_lt2['eom_overshoot_duration2'], eom_overshoot2=msmt.params_lt2['eom_overshoot2'], aom_risetime=msmt.params_lt2['aom_risetime']) msmt.short_eom_aom_pulse = pulselib.short_EOMAOMPulse( 'Eom Aom Pulse', eom_channel='EOM_Matisse', aom_channel='EOM_AOM_Matisse', eom_off_duration=msmt.params_lt2['eom_off_duration'], eom_off_amplitude=msmt.params_lt2['eom_off_amplitude'], eom_off_2_amplitude=2.65, #msmt.params_lt2['eom_off_2_amplitude'], eom_overshoot_duration1=msmt.params_lt2['eom_overshoot_duration1'], eom_overshoot1=0.0, #msmt.params_lt2['eom_overshoot1'], eom_overshoot_duration2=msmt.params_lt2['eom_overshoot_duration2'], eom_overshoot2=0.0, #msmt.params_lt2['eom_overshoot2'], aom_risetime=msmt.params_lt2['aom_risetime']) msmt.HH_sync = pulse.SquarePulse(channel='HH_sync', length=50e-9, amplitude=1.0) msmt.eom_trigger = pulse.SquarePulse(channel='EOM_trigger', length=100e-9, amplitude=1.0) msmt.SP_pulse = pulse.SquarePulse(channel='AOM_Newfocus', amplitude=1.0) # msmt.yellow_pulse = pulse.SquarePulse(channel = 'AOM_Yellow', amplitude = 1.0) msmt.plu_gate = pulse.SquarePulse( channel='plu_sync', amplitude=1.0, length=msmt.params_lt2['PLU_gate_duration']) msmt.HH_marker = pulse.SquarePulse(channel='HH_MA1', length=50e-9, amplitude=1.0) ### LDE attempt return True
def generate_sequence(self, upload=True): #print 'test' # define the necessary pulses X1 = pulselib.IQ_CORPSE_pulse('CORPSE pi-pulse', I_channel = 'MW_1', Q_channel='dummy', PM_channel = 'MW_pulsemod', #second_MW_channel = 'MW_Qmod', PM_risetime = self.params['MW_pulse_mod_risetime'], amplitude = self.params['CORPSE_pi_amp'], rabi_frequency = self.params['CORPSE_pi_frq'], eff_rotation_angle = 180) X1.channels.remove('dummy') X2 = pulselib.IQ_CORPSE_pulse('CORPSE 2pi-pulse', I_channel = 'MW_2', PM_channel = 'MW_pulsemod', #second_MW_channel = 'MW_Qmod', PM_risetime = self.params['MW_pulse_mod_risetime'], amplitude = self.params['CORPSE_2pi_amp'], rabi_frequency = self.params['CORPSE_2pi_frq'], eff_rotation_angle = 360) X2.channels.remove('dummy') RND_halt = pulse.SquarePulse(channel = 'RND_halt', amplitude = 1.0, length = 400e-9) sync = pulse.SquarePulse(channel = 'sync', length = 50e-9, amplitude = 1.0) T = pulse.SquarePulse(channel='MW_1', name='delay', length = 200e-9, amplitude = 0.) RO_pulse = pulse.SquarePulse(channel = 'AOM_Matisse', amplitude = self.params['E_RO_voltage_AWG'], length = self.params['SSRO_duration']*1e-6) # make the elements - one for each ssb frequency elements = [] for i in range(self.params['pts']): e = element.Element('ElectronRandom_pt-%d' % i, pulsar=qt.pulsar) e.append(T) e.append(sync) e.append(T) e.append(RND_halt) ref=e.append(T) e.add(X1, refpulse=ref) e.add(X2, refpulse=ref) e.append(pulse.cp(T, length = 1e-6)) e.append(RO_pulse) e.append(T) elements.append(e) # create a sequence from the pulses seq = pulsar.Sequence('ElectronRandom sequence') for e in elements: seq.append(name=e.name, wfname=e.name, trigger_wait=True) # upload the waveforms to the AWG if upload: qt.pulsar.program_awg(seq,*elements)