From 6399b61ff82f1e5c4196cccc7ae7b3af362ae57c Mon Sep 17 00:00:00 2001 From: x03daop Date: Sat, 6 Aug 2016 21:30:47 +0200 Subject: [PATCH] Script execution --- script/Schofield_XPS.py | 188 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 script/Schofield_XPS.py diff --git a/script/Schofield_XPS.py b/script/Schofield_XPS.py new file mode 100644 index 00000000..792271fe --- /dev/null +++ b/script/Schofield_XPS.py @@ -0,0 +1,188 @@ +""" +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 = 0.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 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()] + append_dataset(energy_scale_table,energy_scale_array) + + +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 energy_scale_array, energy_scale_table, VECTOR,pass_energy_hold,angle_time,angle_range,azi_range,bb + 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) + + bb = bb+1 + energy_scale_table = "scan " + str(bb) + "/EnergyScale" + print energy_scale_table + create_dataset(energy_scale_table, 'd', dimensions=[0,3]) + + + adjust_sensors() + set_adc_averaging() + set_preference(Preference.PLOT_TYPES, {'Scienta spectrum':1}) + + tic = time.time() + #print ' Flag 1' + Scienta.getStepTime().write(angle_time[jj]) + #print ' Flag 2' + sleep(1) + vscan(Eph, SENSORS, VECTOR, True, LATENCY,False, before_read=wait_beam, after_read = after_readout) + toc = time.time() + tictoc = round((toc-tic)/60*100)/100 + print 'time taken is ', tictoc, ' minutes' + +global initial_energy_range,energy_scale_array, energy_scale_table, VECTOR,pass_energy_hold,angle_time,angle_range,azi_range,SENSORS +bb = 0 +SENSORS = [] +#################### C 1s XPS scan ############################## +print ' ######################################################' +print ' ** Begin C 1s XPS **' +tic_whole = time.time() +VECTOR = [ 450.0] +#for nn in range(63): +# VECTOR.append(VECTOR[-1]+4) + + +#pass_energy_hold = 100 + +initial_energy_range = [[155., 165., 0.05]] + +angle_time = [0.5] +energy_scale_array = [] +measure_stuff() +initial_energy_range = [[344.,348., 0.05]] + +angle_time = [0.5] +energy_scale_array = [] +measure_stuff() +toc_whole = time.time() +tictoc = round(toc_whole-tic_whole) +print ' ** End C 1s XPS **' +print ' ** time taken was ', math.floor(tictoc/3600), ' hours and ', round((tictoc-math.floor(tictoc/3600)*3600)/60), ' minutes.' +print ' ######################################################' +#################### Overview scan ############################## +print ' ######################################################' +print ' ** Begin Overview XPS **' +tic_whole = time.time() +VECTOR = [ 800.0] +#for nn in range(63): +# VECTOR.append(VECTOR[-1]+4) + + +#pass_energy_hold = 100 + +initial_energy_range = [[100., 805., 0.5]] + +angle_time = [0.5] +energy_scale_array = [] +measure_stuff() + +toc_whole = time.time() +tictoc = round(toc_whole-tic_whole) +print ' ** End Overview XPS **' +print ' ** time taken was ', math.floor(tictoc/3600), ' hours and ', round((tictoc-math.floor(tictoc/3600)*3600)/60), ' minutes.' +print ' ######################################################' +#################### O 1s XPS scan ############################## +print ' ######################################################' +print ' ** Begin O 1s XPS **' +tic_whole = time.time() +VECTOR = [ 650.0] +#for nn in range(63): +# VECTOR.append(VECTOR[-1]+4) + + +#pass_energy_hold = 100 + +initial_energy_range = [[108., 119., 0.05]] + +angle_time = [0.1] +energy_scale_array = [] +measure_stuff() +initial_energy_range = [[544.,548., 0.05]] + +angle_time = [0.1] +energy_scale_array = [] +measure_stuff() +toc_whole = time.time() +tictoc = round(toc_whole-tic_whole) +print ' ** End O 1s XPS **' +print ' ** time taken was ', math.floor(tictoc/3600), ' hours and ', round((tictoc-math.floor(tictoc/3600)*3600)/60), ' minutes.' +print ' ######################################################' + + + + +#################### Si 2p XPS scan ############################## +print ' ######################################################' +print ' ** Begin Si 2p XPS **' +tic_whole = time.time() +VECTOR = [ 450.0] +#for nn in range(63): +# VECTOR.append(VECTOR[-1]+4) + + +#pass_energy_hold = 100 + +initial_energy_range = [[93., 98., 0.05]] + +angle_time = [0.1] +energy_scale_array = [] +measure_stuff() + +print ' ** End Si 2p XPS **' +print ' ** time taken was ', math.floor(tictoc/3600), ' hours and ', round((tictoc-math.floor(tictoc/3600)*3600)/60), ' minutes.' +print ' ######################################################' +