diff --git a/script/MultiRegionScan.py b/script/MultiRegionScan.py index d0358601..23aeaefd 100644 --- a/script/MultiRegionScan.py +++ b/script/MultiRegionScan.py @@ -20,8 +20,17 @@ class SpectrumReader(ReadonlyRegisterBase, ReadonlyRegisterArray): #super(SpectrumReader, self).initialize() self.channel_begin_dataset_name = "scan{0}/ScientaChannelBegin{1}".format(self.scan_index + 1, self.region_index + 1) self.channel_end_dataset_name = "scan{0}/ScientaChannelEnd{1}".format(self.scan_index + 1, self.region_index + 1) + self.pass_energy_dataset_name = "scan{0}/ScientaPassEnergy{1}".format(self.scan_index + 1, self.region_index + 1) + self.step_energy_dataset_name = "scan{0}/ScientaStepEnergy{1}".format(self.scan_index + 1, self.region_index + 1) + self.step_time_dataset_name = "scan{0}/ScientaStepTime{1}".format(self.scan_index + 1, self.region_index + 1) + self.iterations_dataset_name = "scan{0}/ScientaIterations{1}".format(self.scan_index + 1, self.region_index + 1) + create_dataset(self.channel_begin_dataset_name, 'd') create_dataset(self.channel_end_dataset_name, 'd') + create_dataset(self.pass_energy_dataset_name, 'd') + create_dataset(self.step_energy_dataset_name, 'd') + create_dataset(self.step_time_dataset_name, 'd') + create_dataset(self.iterations_dataset_name, 'd') def setup(self): ephot = Eph.read() @@ -42,9 +51,14 @@ class SpectrumReader(ReadonlyRegisterBase, ReadonlyRegisterArray): Scienta.setPassEnergy(self.region['epass']) Scienta.stepTime.write(self.region['tstep']) Scienta.setIterations(self.region['iter']) + Scienta.update() append_dataset(self.channel_begin_dataset_name, elo) append_dataset(self.channel_end_dataset_name, ehi) + append_dataset(self.pass_energy_dataset_name, self.region['epass']) + append_dataset(self.step_energy_dataset_name, self.region['estep']) + append_dataset(self.step_time_dataset_name, self.region['tstep']) + append_dataset(self.iterations_dataset_name, self.region['iter']) def read(self): self.setup() @@ -71,6 +85,25 @@ class ImageReader(ReadonlyRegisterBase, ReadonlyRegisterMatrix): ny = Scienta.slices.read() return ny +# plotting current spectrum +names = [] +names.append("Online Spectrum") +plots = plot(None, names) +global online_spectrum_plot +online_spectrum_plot = plots[0].getSeries(0) +task = None + +def plot_cur_spectrum(): + global online_spectrum_plot + try: + while get_context().state.running: + y = Scienta.spectrum.take(100) + x = Scienta.spectrumX + spectrum_series.setData(x, y) + time.sleep(1.0) + finally: + print "Stopping spectrum plotting" + global scan_index scan_index = -1 @@ -105,6 +138,7 @@ def do_scan(motors, positions, regions, latency): try: set_preference(Preference.PLOT_TYPES, {'Scienta spectrum':1}) + task = fork(plot_cur_spectrum) do_scan(MOTORS, POSITIONS, REGIONS, LATENCY) finally: if CLOSE_SHUTTER_AT_END: