""" Arguments: """ MOTORS = [Eph] VECTOR = [295.0, 296.0] LATENCY = 0.0 REGION1 = {'elo': 240.0, 'ehi': 242.0, 'estep': 0.1, 'epass': 100, 'tstep': 0.1, 'iter': 1} REGION2 = {'elo': 241.0, 'ehi': 243.0, 'estep': 0.2, 'epass': 100, 'tstep': 0.1, 'iter': 1} REGIONS = [REGION1, REGION2] Scienta.setAcquisitionMode(ch.psi.pshell.epics.Scienta.AcquisitionMode.Swept) class SpectrumReader(ReadonlyRegisterBase, ReadonlyRegisterArray): def setup(self): Scienta.lowEnergy.write(self.region['elo']) Scienta.highEnergy.write(self.region['ehi']) 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) sp = Scienta.getSpectrum().read() return sp def getSize(self): nx = int((self.region['ehi'] - self.region['elo']) / self.region['estep']) + 1 return nx class ImageReader(ReadonlyRegisterBase, ReadonlyRegisterMatrix): def read(self): return Scienta.getDataMatrix().read() def getWidth(self): nx = int((self.region['ehi'] - self.region['elo']) / self.region['estep']) + 1 return nx def getHeight(self): ny = Scienta.slices.read() return ny SENSORS = [SampleCurrent, RefCurrent] 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) 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}) vscan(MOTORS, SENSORS, VECTOR, True, LATENCY,False, before_read=wait_beam, after_read = after_readout)