示例#1
0
 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()