def timing(self, delta_time, s_time, d_time, d_channels):
        self.delta_time = delta_time
        #get the sync pulse information
        #        s_time,s_channels=self.read_file(self.file_location)
        #create two dictionaries: 1 for region one  and the other for region 2
        self.region1_spectrum = {}
        self.region2_spectrum = {}
        for i in range(self.num_channels):
            self.region1_spectrum[i] = 0
            self.region2_spectrum[i] = 0
        #convert the lists in np arrays for cython to work with

        sync_time = np.asarray(s_time)
        detec_time = np.asarray(d_time)
        detec_channels = np.asarray(d_channels)
        sync_num = sync_time.size
        #loop through the sync pulse times
        #        d_loc=0
        #        split_loc=0
        s = time.time()
        try:
            r1, r2 = Timing.channel_timing(sync_time, sync_num, detec_time,
                                           detec_channels, delta_time,
                                           self.num_channels)
        except:
            sync_num -= 1
            r1, r2 = Timing.channel_timing(sync_time, sync_num, detec_time,
                                           detec_channels, delta_time,
                                           self.num_channels)

        for i in range(len(r1)):
            self.region1_spectrum[i] = r1[i]
            self.region2_spectrum[i] = r2[i]

        print('Process time {:.2f}'.format(time.time() - s))
        s = time.time()
        #convert the sync time and pulse times to np arrays for cython
        pulse_bins = 100
        pulse_timing = np.linspace(0, (s_time[2] - s_time[1]), pulse_bins)

        pulse_times = Timing.time_point(sync_time, detec_time, sync_num,
                                        pulse_timing, pulse_bins)
        print('Process timing in: {:.2f}s'.format(time.time() - s))
        del sync_time
        del detec_time
        del s_time
        del d_time
        del d_channels
        return [
            self.region1_spectrum, self.region2_spectrum,
            [pulse_times, pulse_timing]
        ]