def generate_sequence(self, upload=True): #print 'test' # define the necessary pulses X1 = pulselib.MW_CORPSE_pulse('CORPSE pi-pulse', MW_channel = 'MW_1', 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) X2 = pulselib.MW_CORPSE_pulse('CORPSE 2pi-pulse', MW_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) 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)
def generate_sequence(self, upload=True): # electron manipulation pulses T = pulse.SquarePulse(channel='MW_pulsemod', length=10e-9, amplitude=0) CORPSE = pulselib.MW_CORPSE_pulse( 'CORPSE pi-pulse', MW_channel=self.params['cur_MW_channel'], 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_rabi_frequency'], pulse_delay=self.params['CORPSE_pulse_delay'], eff_rotation_angle=self.params['CORPSE_eff_rotation_angle']) 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 pulse_defs_lt1(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['MW_pulse_mod_risetime']) msmt.CORPSE_pi = pulselib.MW_CORPSE_pulse( 'CORPSE pi-pulse', MW_channel='MW_Imod', PM_channel='MW_pulsemod', second_MW_channel='MW_Qmod', PM_risetime=msmt.params['MW_pulse_mod_risetime'], amplitude=msmt.params['CORPSE_pi_amp'], rabi_frequency=msmt.params['CORPSE_rabi_frequency'], eff_rotation_angle=180) msmt.CORPSE_pi2 = pulselib.MW_CORPSE_pulse( 'CORPSE pi2-pulse', MW_channel='MW_Imod', PM_channel='MW_pulsemod', second_MW_channel='MW_Qmod', PM_risetime=msmt.params['MW_pulse_mod_risetime'], amplitude=msmt.params['CORPSE_pi2_amp'], rabi_frequency=msmt.params['CORPSE_rabi_frequency'], eff_rotation_angle=90) msmt.CORPSE_RND0 = pulselib.MW_CORPSE_pulse( 'CORPSE pi2-pulse', MW_channel='MW_Imod', PM_channel='MW_pulsemod', PM_risetime=msmt.params['MW_pulse_mod_risetime'], amplitude=msmt.params['CORPSE_RND_amp'], rabi_frequency=msmt.params['CORPSE_rabi_frequency'], eff_rotation_angle=msmt.params['RND_angle_0']) msmt.CORPSE_RND1 = pulselib.MW_CORPSE_pulse( 'CORPSE pi2-pulse', MW_channel='MW_Qmod', PM_channel='MW_pulsemod', PM_risetime=msmt.params['MW_pulse_mod_risetime'], amplitude=msmt.params['CORPSE_RND_amp'], rabi_frequency=msmt.params['CORPSE_rabi_frequency'], eff_rotation_angle=msmt.params['RND_angle_1']) msmt.eom_pulse = eom_pulses.EOMAOMPulse( 'Eom Aom Pulse', eom_channel='EOM_Matisse', aom_channel='EOM_AOM_Matisse', eom_pulse_duration=msmt.params['eom_pulse_duration'], eom_off_duration=msmt.params['eom_off_duration'], eom_off_amplitude=msmt.params['eom_off_amplitude'], eom_pulse_amplitude=msmt.params['eom_pulse_amplitude'], eom_overshoot_duration1=msmt.params['eom_overshoot_duration1'], eom_overshoot1=msmt.params['eom_overshoot1'], eom_overshoot_duration2=msmt.params['eom_overshoot_duration2'], eom_overshoot2=msmt.params['eom_overshoot2'], aom_risetime=msmt.params['aom_risetime'], aom_amplitude=msmt.params['aom_amplitude']) msmt.RND_halt_off_pulse = pulse.SquarePulse( channel='RND_halt', amplitude=-2.0, length=msmt.params['RND_duration']) ### synchronizing, etc msmt.adwin_trigger_pulse = pulse.SquarePulse(channel='adwin_sync', length=5e-6, amplitude=2) msmt.adwin_success_pulse = pulse.SquarePulse( channel='adwin_success_trigger', length=5e-6, amplitude=2) msmt.sync = pulse.SquarePulse(channel='sync', length=50e-9, amplitude=1.0) msmt.SP_pulse = pulse.SquarePulse(channel='AOM_Newfocus', amplitude=1.0) msmt.RO_pulse = pulse.SquarePulse(channel='AOM_Matisse', amplitude=0.0) msmt.yellow_pulse = pulse.SquarePulse(channel='AOM_Yellow', amplitude=1.0) return True