Ejemplo n.º 1
0
 def program_pulser(self):
     self.pulser.reset_timetags()
     pulse_sequence = branching_ratio_sequence(self.parameters)
     pulse_sequence.programSequence(self.pulser)
     self.timetag_record_cycle = pulse_sequence.timetag_record_cycle
     self.start_recording_timetags = pulse_sequence.start_recording_timetags
     self.binner = Binner(self.timetag_record_cycle['s'], 100e-9)
Ejemplo n.º 2
0
    def get_spectrum_count(self, freq, power):
        back_to_back = int(
            self.parameters.BareLineScan.pulse_sequences_per_timetag_transfer)
        total_timetag_transfers = int(
            self.parameters.BareLineScan.total_timetag_transfers)

        self.program_pulser(freq, power)
        self.binner = Binner(self.timetag_record_cycle['s'], 100e-9)

        for index in range(total_timetag_transfers):
            self.pulser.start_number(back_to_back)
            self.pulser.wait_sequence_done()
            self.pulser.stop_sequence()
            #get timetags and save
            timetags = self.pulser.get_timetags().asarray
            #print self.parameter.DopplerCooling.doppler_cooling_duration
            if timetags.size >= self.parameters.BareLineScan.max_timetags_per_transfer:
                raise Exception(
                    "Timetags Overflow, should reduce number of back to back pulse sequences"
                )
            else:
                self.dv.add([index, timetags.size],
                            context=self.total_timetag_save_context)
            iters = index * numpy.ones_like(timetags)
            self.dv.add(numpy.vstack((iters, timetags)).transpose(),
                        context=self.timetag_save_context)
            #collapse the timetags onto a single cycle starting at 0

            red_duration = self.parameters['BareLineScan.duration_866_pulse'][
                's']
            blue_duration = self.parameters['BareLineScan.duration_397_pulse'][
                's']
            gap_duration = self.parameters['BareLineScan.between_pulses']['s']

            timetags = timetags - self.start_recording_timetags[
                's'] - gap_duration - blue_duration  ## shift zero to right before 866 peak
            timetags = timetags % self.timetag_record_cycle['s']
            self.binner.add(
                timetags, back_to_back *
                self.parameters.BareLineScan.cycles_per_sequence)

            count = self.binner.getCount(gap_duration,
                                         2.0 * gap_duration + red_duration)

        return count