diff --git a/config/setup.properties b/config/setup.properties index 5b25f64c..bdf1bf17 100644 --- a/config/setup.properties +++ b/config/setup.properties @@ -1,4 +1,4 @@ -#Thu Sep 24 14:54:38 CEST 2015 +#Thu Sep 15 16:11:43 CEST 2016 configFile={config}/config.properties configFileDevices={config}/devices.properties configFileImageSources={config}/imaging.properties @@ -10,6 +10,7 @@ contextPath={home}/context dataPath=~/Data1 devicesPath={home}/devices extensionsPath={home}/extensions +imagesPath={outp}/images libraryPath={script}; {script}/Lib logPath={home}/log pluginsPath={home}/plugins diff --git a/script/PhdScan.py b/script/PhdScan.py new file mode 100644 index 00000000..b1571389 --- /dev/null +++ b/script/PhdScan.py @@ -0,0 +1,96 @@ +""" +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) +""" + +LATENCY = 2.0 + + +class SpectrumReader(ReadonlyRegisterBase, ReadonlyRegisterArray): + def doRead(self): + global VECTOR + self.offset = Eph.getSetpoint().take() - VECTOR[0] + self.setup() + trig_scienta() + time.sleep(0.5) + return Scienta.getSpectrum().read() + + def getSize(self): + return len(Scienta.getSpectrumX()) + + + +class SpectrumReader1(SpectrumReader): + def setup(self): + global 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]) + +class SpectrumReader2(SpectrumReader): + def setup(self): + global 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]) + +class SpectrumReader3(SpectrumReader): + def setup(self): + global initial_energy_range + 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]) + +class ImageReader(ReadonlyRegisterBase, ReadonlyRegisterMatrix): + def doRead(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]) + + def getHeight(self): + return Scienta.getDataMatrix().getHeight() + + +def measure_stuff(): + global VECTOR + 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") + + Scienta.getDataMatrix() + + SENSORS = [RefCurrent, reader1, image1, reader2, image2]#, reader3, image3] + + Scienta.setAcquisitionMode(ch.psi.pshell.epics.Scienta.AcquisitionMode.Swept) + + adjust_sensors() + set_adc_averaging() + set_preference(Preference.PLOT_TYPES, {'Scienta spectrum':1}) + + vscan(Eph, SENSORS, VECTOR, True, LATENCY,False, before_read=wait_beam, after_read = after_readout) + +global initial_energy_range, VECTOR, SENSORS +SENSORS = [] + +# N 1s, azi = 21.1, -8.9; tilt = 0.5, 0.5 +VECTOR = [425.0 + i * 2.5 for i in range(121)] +initial_energy_range = [[19.0, 26.0, 0.1], + [26.0, 36.0, 0.5]] + +# B 1s; azi = 21.1; tilt = 25.5; 2 sweeps +VECTOR = [213.0 + i * 2.5 for i in range(121)] +initial_energy_range = [[19.0, 26.0, 0.1], + [26.0, 36.0, 0.5]] + +measure_stuff()