diff --git a/script/users/Granas/XPSSpectrum.py b/script/users/Granas/XPSSpectrum.py index 22474566..d3c31a2c 100644 --- a/script/users/Granas/XPSSpectrum.py +++ b/script/users/Granas/XPSSpectrum.py @@ -1,25 +1,64 @@ +""" +author chritstoph seitz + +starting the xps measurement + +Fermi edge of C1s test +""" + +#my debug +def my_debug(str_): + open("/sls/X03DA/data/gac-03da/Data1/2018/10/Granas/XPSstuff/commands/debugging.txt",'a').write(time.strftime("%H:%M")+" "+ str_+"\n") + print(str_) + +""" +here the copy of XPSSpectrum starts + +""" + #Parameters (global variables): # ranges: list of RangeSelection havinf args = (step_size, step_time, iterations) # pass_energy # save_scienta_image # # skip_iteration: if set to 1 then skips after end of current iteration + +global ranges, pass_energy, skip_iteration, ENDSCAN +""" old settings +ranges = [] +# (eph, min, max, step, time, iter) +ranges.append((1300.0, 577.0, 593.0, 0.1, 0.2, 1700)) +ranges.append((1300.0, 713.0, 722.0, 0.1, 0.2, 1000)) +ranges.append((1300.0, 1294.5, 1297.0, 0.02, 1, 2)) +pass_energy = 50 +skip_iteration = False +ENDSCAN = True +""" + +ranges = [] + +select_edge_tmp = "C1s " +pass_energy = 20 #O1s +#save_scienta_image = True + +skip_iteration = False +ENDSCAN = True + +# (eph, min, max, step, time, iter) +if "O1s" in select_edge_tmp: + pass_energy = 50 #C1s + ranges.append((650.0, 645., 647.0, 0.1, 0.2, 10)) # O1s +elif "C1s" in select_edge_tmp: + ranges.append((390.0, 384.4, 387.0, 0.1, 0.2, 20)) # C1s + from ch.psi.pshell.data.LayoutDefault import ATTR_WRITABLE_DIMENSION as ATTR_WRITABLE_DIMENSION -import org.jfree.chart.axis.NumberAxis as NumberAxis cur_range = 0 cur_iteration = 0 -if Scienta.acquisitionMode != Scienta.AcquisitionMode.Swept: - Scienta.acquisitionMode = Scienta.AcquisitionMode.Swept +Scienta.acquisitionMode = Scienta.AcquisitionMode.Swept ret=[] -adjusted_ranges = [] -for cur_range in range(len(ranges)): - r = ranges[cur_range] - ar = [round(r.min / r.vars[1]) * r.vars[1], round(r.max / r.vars[1]) * r.vars[1]] - adjusted_ranges.append(ar) - set_exec_pars(open = True) #Global arguments @@ -28,58 +67,36 @@ Scienta.passEnergy = pass_energy names=[] names.append("Online Spectrum") for i in range(len(ranges)): - names.append(str(ranges[i])) + names.append(str(ranges[i][0])) plots = plot(None, names) - -for p in plots: - p.getAxis(p.AxisId.X).label = "kinetic energy" - eb_axis = NumberAxis("binding energy") - eb_axis.inverted = True - jf = p.chart.plot - jf.setDomainAxis(1, eb_axis) - jf.getDomainAxis(1).labelPaint = jf.getDomainAxis(0).labelPaint - jf.getDomainAxis(1).labelFont = jf.getDomainAxis(0).labelFont - jf.getDomainAxis(1).tickLabelPaint = jf.getDomainAxis(0).tickLabelPaint - jf.getDomainAxis(1).tickLabelFont = jf.getDomainAxis(0).tickLabelFont - - -# online spectrum - -p = plots[0] -spectrum_series = p.getSeries(0) -spectrum_eb_axis = p.chart.plot.getDomainAxis(1) +spectrum_series = plots[0].getSeries(0) def plot_cur_spectrum(): global spectrum_series - global spectrum_eb_axis try: while get_context().state.running: y = Scienta.spectrum.take(100) x = Scienta.spectrumX - spectrum_series.setData(x, y) - eb1 = Eph.take(100) - Scienta.lowEnergy.take(100) - 4.5 - eb2 = Eph.take(100) - Scienta.highEnergy.take(100) - 4.5 - spectrum_eb_axis.setRange(eb2, eb1) + spectrum_series.setData(x, y) time.sleep(1.0) finally: - print "Stopping spectrum plotting" + print "Stopping spectrum plotting" task = None - -# measurements - try: for cur_range in range(len(ranges)): cur_iteration = 0 - skip_iteration = False - Scienta.lowEnergy.write(adjusted_ranges[cur_range][0]) - Scienta.highEnergy.write(adjusted_ranges[cur_range][1]) + skip_iteration = False + params = ranges[cur_range] + Eph.move(params[0]) + time.sleep(5.0) + Scienta.lowEnergy.write(params[1]) + Scienta.highEnergy.write(params[2]) Scienta.update() - vars = ranges[cur_range].vars - Scienta.stepTime.write(vars[0]) - Scienta.stepSize.write(vars[1]) + Scienta.stepSize.write(params[3]) + Scienta.stepTime.write(params[4]) Scienta.setIterations(1) - + set_adc_averaging() #iterations done in script @@ -89,9 +106,8 @@ try: task = fork(plot_cur_spectrum) path="scan" + str(cur_range+1) + "/" - for cur_iteration in range(vars[2]): - p = plots[cur_range+1] - p.setTitle(str(ranges[cur_range]) + " - iteration " + str(cur_iteration+1)) + for cur_iteration in range(params[5]): + plots[cur_range+1].setTitle(str(params[0]) + " - iteration " + str(cur_iteration+1)) while True: wait_beam() trig_scienta() @@ -105,43 +121,27 @@ try: ydata[k] = ydata[k] + spectrum_array[k] if xdata is None: xdata = Scienta.spectrumX - p.getSeries(0).setData(xdata, ydata) - eb_axis = p.chart.plot.getDomainAxis(1) - eb1 = Eph.take(100) - Scienta.lowEnergy.take(100) - 4.5 - eb2 = Eph.take(100) - Scienta.highEnergy.take(100) - 4.5 - eb_axis.setRange(eb2, eb1) - - if save_scienta_image: - image_array = Scienta.dataMatrix.read() - if image_data is None: - image_data = image_array - else: - for k in range (len(image_data)): - for j in range (len(image_data[0])): - image_data[k][j] = image_data[k][j] + image_array[k][j] + plots[cur_range+1].getSeries(0).setData(xdata, ydata) if skip_iteration: break save_dataset(path + "ScientaSpectrum", ydata) set_attribute(path, "Iterations",cur_iteration+1) - if save_scienta_image: - save_dataset(path + "ScientaImage", image_data) if cur_iteration==0: save_dataset(path + "ScientaChannels", xdata) set_attribute(path + "ScientaChannels", ATTR_WRITABLE_DIMENSION, 1) - set_attribute(path, "Range Low", adjusted_ranges[cur_range][0]) - set_attribute(path, "Range High", adjusted_ranges[cur_range][1]) - set_attribute(path, "Step Time", vars[0]) - set_attribute(path, "Step Size", vars[1]) - set_attribute(path, "Pass Energy",pass_energy) - set_attribute(path, "Readables", ["ScientaSpectrum","ScientaImage"] if save_scienta_image else ["ScientaSpectrum",]) + set_attribute(path, "Range Low", params[1]) + set_attribute(path, "Range High", params[2]) + set_attribute(path, "Step Time", params[4]) + set_attribute(path, "Step Size", params[3]) + set_attribute(path, "Pass Energy", pass_energy) + set_attribute(path, "Readables", ["ScientaSpectrum",]) set_attribute(path, "Writables", ["ScientaChannels",]) create_diag_datasets(path) append_diag_datasets(path) - plots[cur_range+1].setTitle(str(ranges[cur_range])) + plots[cur_range+1].setTitle(str(params[0])) ret.append((xdata, ydata)) - finally: cur_range = -1 if not Scienta.isReady():