def updater(self): delta_time=self.duty_cycle.value()/100*( self.sync_time[2]-self.sync_time[1]) delt=(self.sync_time[2]-self.sync_time[1]) self.offset.setMinimum(-int((delt*self.duty_cycle.value()/100)*.75)) sync_width=delta_time delta_time+=self.offset.value() self.delta_time=delta_time start=float(self.start_time.value())*1e6 end=float(self.end_time.value())*1e6 sb,se=Timing.Splitter(self.sync_time,len(self.sync_time), start,end) cb,ce=Timing.Splitter(self.list_time,len(self.list_time), start,end) self.region1_spec,self.region2_spec,self.time=self.list_mode_processor.timing( delta_time,self.sync_time[sb:se], self.list_time[cb:ce],self.list_channel[cb:ce]) total=[] for i in range(len(list(self.region2_spec.values()))): total.append(list(self.region2_spec.values())[i]+list( self.region1_spec.values())[i]) self.region1_ax.clear() self.region2_ax.clear() self.total_ax.clear() self.region1_ax.set_title('Region 1') self.region2_ax.set_title('Region 2') self.total_ax.set_title('Total') r1_values=list(self.region1_spec.values())[:-1] r2_values=list(self.region2_spec.values())[:-1] uncal_keys=list(self.region1_spec.keys()) if self.calibration: self.region1_ax.set_xlim(self.calibration_data[0], 14) self.region2_ax.set_xlim(self.calibration_data[0], 14) self.total_ax.set_xlim(self.calibration_data[0],14) self.region1_ax.set_xlabel('Energy [MeV]') self.region2_ax.set_xlabel('Energy [MeV]') self.total_ax.set_xlabel('Energy [MeV]') self.region1_ax.plot(self.calibration_data,r1_values) self.region2_ax.plot(self.calibration_data,r2_values) self.total_ax.plot(self.calibration_data,total[:-1],label='Total') self.total_ax.plot(self.calibration_data,r1_values,label='Region 1') self.total_ax.plot(self.calibration_data,r2_values,label='Region 2') else: self.region1_ax.set_xlabel('Channel') self.region2_ax.set_xlabel('Channel') self.total_ax.set_xlabel('Channel') self.region1_ax.set_xlim(0,len(list(self.region1_spec.keys()))) self.region2_ax.set_xlim(0,len(list(self.region2_spec.keys()))) self.total_ax.set_xlim(0,len(list(self.region2_spec.keys()))) self.region1_ax.plot(uncal_keys[:-1],r1_values) self.region2_ax.plot(uncal_keys[:-1],r2_values) self.total_ax.plot(uncal_keys[:-1],total[:-1],label='Total') self.total_ax.plot(uncal_keys[:-1],r1_values,label='Region 1') self.total_ax.plot(uncal_keys[:-1],r2_values,label='Region 2') self.region1_ax.set_yscale('log') self.region2_ax.set_yscale('log') self.total_ax.set_yscale('log') self.region1_ax.set_ylabel('Counts') self.region2_ax.set_ylabel('Counts') self.total_ax.set_ylabel('Counts') self.total_ax.legend() self.region1_canvas.draw() self.region2_canvas.draw() self.total_canvas.draw() #plot the timing stuff self.time_ax.clear() self.time_ax.plot(self.time[1][:-1], self.time[0][:-1],'*',label='Time Distribution') height=max(self.time[0]) ys=[0,height,height,0] xs=[0,0,sync_width,sync_width] self.time_ax.plot(xs,ys, label='Sync Pulse, {:.1f}%'.format(self.duty_cycle.value())) self.time_ax.axvline(delta_time, label='Region divider, {:.1f}us\nafter pulse'.format(delta_time)) self.time_ax.set_xlabel(r'Time [$\mu$s]') self.time_ax.set_title('Time') self.time_ax.set_ylabel('Counts') self.time_ax.set_yscale('log') self.time_ax.legend() self.time_canvas.draw() winsound.MessageBeep()