From 089b8aa4b279e715601b1376e8b2d82c419f3d47 Mon Sep 17 00:00:00 2001 From: x03daop Date: Fri, 7 Apr 2017 16:10:51 +0200 Subject: [PATCH] Script execution --- script/MultiRegionScan.py | 110 +++++++++++++++++--------------------- 1 file changed, 50 insertions(+), 60 deletions(-) diff --git a/script/MultiRegionScan.py b/script/MultiRegionScan.py index 185f9772..8691c5f7 100644 --- a/script/MultiRegionScan.py +++ b/script/MultiRegionScan.py @@ -1,88 +1,78 @@ """ Arguments: -VECTOR (Double[][], Scan vector: Eph,Elow,Ehigh or Eph,Ecenter) -SENSORS (list) -LATENCY (double) -MODE ('fixed' or 'swept') -TYPE ('CIS' or 'CFS') -STEP (double) """ +#MOTORS = [Eph] +#VECTOR = [295.0, 296.0] +EPHOT0 = 296.0 + +MOTORS = [dummy] +VECTOR = range(10) LATENCY = 0.0 +REGION1 = {'elo': 243.0, 'ehi': 293.0, 'estep': 0.05, 'epass': 50, 'tstep': 1.0, 'iter': 1} +REGION2 = {'elo': 214.0, 'ehi': 220.0, 'estep': 0.05, 'epass': 50, 'tstep': 0.5, 'iter': 1} +REGIONS = [REGION1, REGION2] + +Scienta.setAcquisitionMode(ch.psi.pshell.epics.Scienta.AcquisitionMode.Swept) class SpectrumReader(ReadonlyRegisterBase, ReadonlyRegisterArray): - def doRead(self): - global VECTOR - self.offset = Eph.getSetpoint().take() - VECTOR[0] + def setup(self): + ephot = Eph.read() + edelta = ephot - EPHOT0 + Scienta.lowEnergy.write(self.region['elo'] + edelta) + Scienta.highEnergy.write(self.region['ehi'] + edelta) + Scienta.stepSize.write(self.region['estep']) + Scienta.setPassEnergy(self.region['epass']) + Scienta.stepTime.write(self.region['tstep']) + Scienta.setIterations(self.region['iter']) + + def read(self): + print "acquiring spectrum {0}-{1} eV".format(self.region['elo'], self.region['ehi']) self.setup() trig_scienta() time.sleep(0.5) - return Scienta.getSpectrum().read() + sp = Scienta.getSpectrum().read() + return sp def getSize(self): - return len(Scienta.getSpectrumX()) - - - -class SpectrumReader1(SpectrumReader): - def setup(self): - global energy_scale_array, initial_energy_range - Scienta.getLowEnergy().write(initial_energy_range[0][0] + self.offset) - Scienta.getHighEnergy().write(initial_energy_range[0][1] + self.offset) - Scienta.getStepSize().write(initial_energy_range[0][2]) - energy_scale_array = [Scienta.getLowEnergy().take(), Scienta.getHighEnergy().take(), Scienta.getStepSize().take()] - -class SpectrumReader2(SpectrumReader): - def setup(self): - global energy_scale_array, initial_energy_range - Scienta.getLowEnergy().write(initial_energy_range[1][0] + self.offset) - Scienta.getHighEnergy().write(initial_energy_range[1][1] + self.offset) - Scienta.getStepSize().write(initial_energy_range[1][2]) - energy_scale_array = energy_scale_array + [Scienta.getLowEnergy().take(), Scienta.getHighEnergy().take(), Scienta.getStepSize().take()] - append_dataset(energy_scale_table,energy_scale_array) - -class SpectrumReader3(SpectrumReader): - def setup(self): - global initial_energy_range,energy_scale_array, energy_scale_table - Scienta.getLowEnergy().write(initial_energy_range[2][0] + self.offset) - Scienta.getHighEnergy().write(initial_energy_range[2][1] + self.offset) - Scienta.getStepSize().write(initial_energy_range[2][2]) - energy_scale_array = energy_scale_array + [Scienta.getLowEnergy().take(), Scienta.getHighEnergy().take(), Scienta.getStepSize().take()] - append_dataset(energy_scale_table,energy_scale_array) + nx = int((self.region['ehi'] - self.region['elo']) / self.region['estep']) + 1 + return nx class ImageReader(ReadonlyRegisterBase, ReadonlyRegisterMatrix): - def doRead(self): + def read(self): return Scienta.getDataMatrix().read() def getWidth(self): - global initial_energy_range - return int( (initial_energy_range[self.index][1] - initial_energy_range[self.index][0]) / initial_energy_range[self.index][2]) + nx = int((self.region['ehi'] - self.region['elo']) / self.region['estep']) + 1 + return nx def getHeight(self): - return Scienta.getDataMatrix().getHeight() + ny = Scienta.slices.read() + return ny -def measure_stuff(): - global VECTOR, MOTORS, SENSORS - reader1 = SpectrumReader1(); reader1.initialize() - reader2 = SpectrumReader2(); reader2.initialize() - #reader3 = SpectrumReader3(); reader3.initialize() - image1 = ImageReader(); image1.initialize(); image1.index=0; set_device_alias(image1, "Image1") - image2 = ImageReader(); image2.initialize(); image2.index=1; set_device_alias(image2, "Image2") - #image3 = ImageReader(); image3.initialize(); image3.index=2; set_device_alias(image3, "Image3") +SENSORS = [SampleCurrent, RefCurrent] - Scienta.getDataMatrix() +for (index, region) in enumerate(REGIONS): + reader = SpectrumReader() + reader.initialize() + reader.index = index + reader.region = region + set_device_alias(reader, "ScientaSpectrum{0}".format(index + 1)) + SENSORS.append(reader) - SENSORS = [RefCurrent, reader1, image1, reader2, image2]#, reader3, image3] + image = ImageReader() + image.initialize() + image.index = index + image.region = region + set_device_alias(image, "ScientaImage{0}".format(index + 1)) + SENSORS.append(image) - adjust_sensors() - set_adc_averaging() - set_preference(Preference.PLOT_TYPES, {'Scienta spectrum':1}) +adjust_sensors() +set_adc_averaging() +set_preference(Preference.PLOT_TYPES, {'Scienta spectrum':1}) - lscan(MOTORS, SENSORS, VECTOR, True, LATENCY,False, before_read=wait_beam, after_read = after_readout) - -global VECTOR, MOTORS, SENSORS -measure_stuff() +vscan(MOTORS, SENSORS, VECTOR, True, LATENCY,False, before_read=wait_beam, after_read = after_readout)