From 7e835f90d8c8ac3567403fc4685840b7b58965f3 Mon Sep 17 00:00:00 2001 From: x03daop Date: Fri, 5 Aug 2016 10:41:23 +0200 Subject: [PATCH] Script execution --- script/SchofieldScan.py | 65 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 script/SchofieldScan.py diff --git a/script/SchofieldScan.py b/script/SchofieldScan.py new file mode 100644 index 00000000..a4f1cbb1 --- /dev/null +++ b/script/SchofieldScan.py @@ -0,0 +1,65 @@ +""" +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) +""" +VECTOR = [ + [630.0,88.0, 94.0], + [634.0,94.0,100.0], + ] + +class SpectrumReader(ReadonlyRegisterBase, ReadonlyRegisterArray): + def doRead(self): + global VECTOR + self.offset = Eph.getSetpoint() - VECTOR[0][0] + setup() + trig_scienta() + return Scienta.getSpectrum().read() + + def getSize(self): + return len(Scienta.getSpectrumX()) + +class SpectrumReader1(SpectrumReader): + def setup(self): + Scienta.getStepSize().write(0.1) + Scienta.getChannelBegin().write(88.0 + self.offset) + Scienta.getChannelEnd().write(94.0 + self.offset) + +class SpectrumReader2(SpectrumReader): + def setup(self): + Scienta.getStepSize().write(0.05) + Scienta.getChannelBegin().write(94.0 + self.offset) + Scienta.getChannelEnd().write(98.0 + self.offset) + +class SpectrumReader3(SpectrumReader): + def setup(self): + Scienta.getStepSize().write(0.5) + Scienta.getChannelBegin().write(98.0 + self.offset) + Scienta.getChannelEnd().write(108.0 + self.offset) + +reader1 = SpectrumReader1() +reader2 = SpectrumReader2() +reader3 = SpectrumReader3() + +SENSORS = [RefCurrent, reader1,Scienta.getImage(), reader2, Scienta.getImage(), reader3, Scienta.getImage()] + +Scienta.setAcquisitionMode(ch.psi.pshell.epics.Scienta.AcquisitionMode.Swept) + +Scienta.lowEnergy.write(VECTOR[0][1]) +Scienta.highEnergy.write(VECTOR[0][2]) +writables = (Eph, Scienta.lowEnergy, Scienta.highEnergy) + +adjust_sensors() +set_adc_averaging() +set_preference(Preference.PLOT_TYPES, {'Scienta spectrum':1}) + +try: + vscan(writables, SENSORS, VECTOR, True, LATENCY,False, before_read=wait_beam, after_read = after_readout) +finally: + if ENDSCAN: + after_scan()