diff --git a/config/config.properties b/config/config.properties index 49dad743..012be31d 100644 --- a/config/config.properties +++ b/config/config.properties @@ -1,4 +1,4 @@ -#Wed Jun 15 17:37:31 CEST 2022 +#Thu Jun 30 12:18:32 CEST 2022 autoSaveScanData=true simulation=false commandExecutionEvents=false @@ -26,7 +26,7 @@ dataServerPort=-1 hideServerMessages=false serverPort=8080 versionTrackingEnabled=true -dataPath={data}/{year}/{month}/pereira/pshell-{date}-{time}-{name} +dataPath={data}/{year}/{month}/karadan/pshell-{date}-{time}-{name} serverEnabled=false dataScanReleaseRecords=true depthDimension=2 diff --git a/config/settings.properties b/config/settings.properties index 6bae4804..7e0f45ce 100644 --- a/config/settings.properties +++ b/config/settings.properties @@ -1,7 +1,7 @@ -#Sat Jun 18 22:38:26 CEST 2022 -pgroup=p19571 -proposal=20211675 -proposer=pereira +#Thu Jun 30 12:19:13 CEST 2022 +pgroup=p19764 +proposal=20220567 +proposer=karadan prefix= -sample=hBN -authors=Zviadi Zarkua, Muhammad Saad, Matz Nissen, Renan Villarreal +sample=Si reference +authors=KaradanPrajith diff --git a/config/variables.properties b/config/variables.properties index 51ead464..5c20319a 100644 --- a/config/variables.properties +++ b/config/variables.properties @@ -1,4 +1,4 @@ -#Tue Jun 21 05:01:07 CEST 2022 -LastRunDate=220621 -FileSequentialNumber=13130 -DaySequentialNumber=8 +#Mon Jul 04 12:51:10 CEST 2022 +LastRunDate=220704 +FileSequentialNumber=13220 +DaySequentialNumber=3 diff --git a/devices/ps1img.properties b/devices/ps1img.properties index f8f8d78d..ef7af50f 100644 --- a/devices/ps1img.properties +++ b/devices/ps1img.properties @@ -1,4 +1,4 @@ -#Tue Jun 21 04:04:33 CEST 2022 +#Wed Jun 22 11:59:03 CEST 2022 spatialCalOffsetY=NaN spatialCalOffsetX=NaN dataPolling=500 @@ -11,7 +11,7 @@ spatialCalScaleY=NaN colormapMax=150.0 rescaleOffset=0.0 roiWidth=-1 -colormap=Temperature +colormap=Grayscale pollingBackground=false invert=false colormapMin=0.0 diff --git a/script/191121-ActualOvernight.py b/script/191121-ActualOvernight.py deleted file mode 100644 index 347fc7ff..00000000 --- a/script/191121-ActualOvernight.py +++ /dev/null @@ -1,43 +0,0 @@ -import ch.psi.pshell.plot.RangeSelectionPlot.RangeSelection as RangeSelection - -REFERENCE_POSITION = {'X':1.2 ,'Y':0.0, 'Z':110.6, 'Theta':-9.1, 'Tilt':0.8, 'Phi':-90.0} -SAMPLE_POSITION = {'X':0.65 ,'Y':0.0, 'Z':115.0, 'Theta':-9.1, 'Tilt':0.8, 'Phi':-90.0} - -def move_to_position(pdict): - ManipulatorX.move(pdict['X']) - ManipulatorY.move(pdict['Y']) - ManipulatorZ.move(pdict['Z']) - ManipulatorTheta.move(pdict['Theta']) - ManipulatorTilt.move(pdict['Tilt']) - ManipulatorPhi.move(pdict['Phi']) - -#Au600 -move_to_position(REFERENCE_POSITION) -rs = RangeSelection(347.0,354.0) -rs.setVars([1., 1., 1, 800.]) #Time, Size, Iteration, photon energy - -set_exec_pars(name="Scan1") - -run("XPSSpectrum", {"save_scienta_image":True, - "ranges":[rs, ], - "ENDSCAN":False, - "pass_energy":100}) - -set_exec_pars(open=False) -set_exec_pars(name="Scan2") - -#flush_data() - -#In600 -move_to_position(SAMPLE_POSITION) -#rs = RangeSelection(140.0,153.0) -rs = RangeSelection(347.0,354.0) - -rs.setVars([1., 1., 1, 800.]) #Time, Size, Iteration, photon energy - -run("XPSSpectrum", {"save_scienta_image":True, - "ranges":[rs, ], - "ENDSCAN":False, - "pass_energy":100}) - -flush_data() diff --git a/script/191121-Au-InAsPb-AutoMove.py b/script/191121-Au-InAsPb-AutoMove.py deleted file mode 100644 index 43db1801..00000000 --- a/script/191121-Au-InAsPb-AutoMove.py +++ /dev/null @@ -1,343 +0,0 @@ -""" -Line/vector/area/holo scan of multiple spectral regions - -save this script into your script/user folder before editing! - -usage: -1. uncomment one of the MOTORS lines. - add another line if necessary. -2. uncomment one of the scan blocks and adjust the parameters. - add another block if necessary. -3. declare the regions. -4. add the regions to the REGIONS list. -5. run the script. -""" - -# dummy scan (time series) -MOTORS = [Eph] -# photon energy scan (do not include 'ephot' in regions in this case!) -#MOTORS = [Eph] -# phi scan -#MOTORS = [ManipulatorPhi] -# holo scan -#MOTORS = (ManipulatorPhi, ManipulatorTheta) -# 2D YZ scan -#MOTORS = [ManipulatorY, ManipulatorZ] - -# line scan [start, stop, step] -#POSITIONS = [0., 10., 0.5] -#SCAN = 'lscan' - -# vector scan [pos1, pos2, pos3, ...] -POSITIONS = [600., 900.] -SCAN = 'vscan' - -# area scan [(start1, start2), (stop1, stop2), (step1, step2)] -# corresponding to (positioner1, positioner2) -#POSITIONS = [(-1., 114.), (+1., 116.), (20, 20)] -#ZIGZAG = True -#SCAN = 'ascan' - -# holo scan -#PHI_RANGE = (-160.0, 160.0) # (tuple (min, max)) -#THETA_RANGE = (-9.0, 81.0) # (tuple (min, max)) -#STEPS = (40.0, 1.0) # (tuple (phi, theta)) -#ZIGZAG = True -#POSITIONS = [(PHI_RANGE[0], THETA_RANGE[0]), (PHI_RANGE[1], THETA_RANGE[1]), STEPS] -#SCAN = 'ascan' - -# seconds to wait between positioning command and triggering the detector -LATENCY = 0.0 - - -# region setup -# -# for each region, define a python dictionary with the following items. -# optional items can be left unspecified and will default to the indicated values. -# for swept mode, include 'elo', 'ehi', 'estep', 'iter' values, but do not include 'efix'. -# for fixed mode, include 'efix' value, but do not include 'elo', 'ehi', 'estep', 'iter'. -# -# 'name': user-specific name of the region (for graph title and RegionName attribute in data file) -# 'elo': lower kinetic energy boundary of the spectrum -# 'ehi': upper kinetic energy boundary of the spectrum -# 'estep': energy step size -# 'efix': center kinetic energy in fixed mode -# 'epass': pass energy -# 'ephot': photon energy (default: unchanged) -# 'tstep': dwell time in seconds -# 'iter': number of iterations/sweeps (default 1) -# 'cis': True = constant initial state (photoemission line), False = constant final state (Auger peak), (default False) -# 'slit': exit slit (default: unchanged) - -# First window should be set to first photon energy (see energies above) - -REFERENCE_POSITION = {'X':1.2 ,'Y':0.0, 'Z':110.6, 'Theta':-9.1, 'Tilt':0.9, 'Phi':-90.0} -SAMPLE_POSITION = {'X':0.65 ,'Y':0.0, 'Z':115.0, 'Theta':-9.1, 'Tilt':0.9, 'Phi':-90.0} - -REGION1 = {'name': 'AuFermi', 'ephot':600. , 'elo': 595., 'ehi':597.0, 'estep':0.1, 'epass': 20., 'tstep': 1., 'iter': 1, 'cis': False, 'position': 'reference'} -REGION2 = {'name': 'In3d','ephot':600., 'elo': 140., 'ehi':153.0, 'estep':0.1, 'epass': 20., 'tstep': 1., 'iter': 1, 'cis': False, 'position': 'sample'} - -REGION3 = {'name': 'AuFermi', 'ephot':900. , 'elo': 895., 'ehi':897.0, 'estep':0.1, 'epass': 20., 'tstep': 1., 'iter': 1, 'cis': False, 'position': 'reference'} -REGION4 = {'name': 'Au4f', 'ephot':900. , 'elo': 895., 'ehi':897.0, 'estep':0.1, 'epass': 20., 'tstep': 1., 'iter': 1, 'cis': False, 'position': 'reference'} -REGION5 = {'name': 'In3d','ephot':900., 'elo': 440., 'ehi':453.0, 'estep':0.1, 'epass': 20., 'tstep': 1., 'iter': 1, 'cis': False, 'position': 'sample'} - - -# list of region dictionaries to execute at each scan position -REGIONS = [REGION1, REGION2, REGION3, REGION4] - -# close beam shutter and turn off analyser at the end of the scan -CLOSE_SHUTTER_AT_END = True - -def move_to_position(pdict): - ManipulatorX.move(pdict['X']) - ManipulatorY.move(pdict['Y']) - ManipulatorZ.move(pdict['Z']) - ManipulatorTheta.move(pdict['Theta']) - ManipulatorTilt.move(pdict['Tilt']) - ManipulatorPhi.move(pdict['Phi']) - -# --- DO NOT EDIT BELOW THIS LINE! --- - - -set_exec_pars(keep=False) - -def check_region(region): - """ - check region dictionary items and apply defaults where necessary - """ - region['fixed'] = 'efix' in region - if region['fixed']: - region['elo'] = region['efix'] - region['ehi'] = region['efix'] - if 'iter' not in region: - region['iter'] = 1 - print("region {0}: setting default iter = {1}".format(region['name'], region['iter'])) - if 'cis' not in region: - region['cis'] = False - print("region {0}: setting default cis = {1}".format(region['name'], region['cis'])) - -class SpectrumReader(ReadonlyRegisterBase, ReadonlyRegisterArray): - def initialize(self): - #super(SpectrumReader, self).initialize() - self.scan_index = -1 - - def create_datasets(self): - path = get_exec_pars().scanPath + self.region_name + "/" - - if self.region['fixed']: - self.channel_center_dataset_name = path + "ScientaChannelCenter" - create_dataset(self.channel_center_dataset_name, 'd') - else: - self.channel_begin_dataset_name = path + "ScientaChannelBegin" - self.channel_end_dataset_name = path + "ScientaChannelEnd" - self.step_energy_dataset_name = path + "ScientaStepEnergy" - create_dataset(self.channel_begin_dataset_name, 'd') - create_dataset(self.channel_end_dataset_name, 'd') - create_dataset(self.step_energy_dataset_name, 'd') - - if 'epass' in self.region: - self.pass_energy_dataset_name = path + "ScientaPassEnergy" - create_dataset(self.pass_energy_dataset_name, 'd') - if 'tstep' in self.region: - self.step_time_dataset_name = path + "ScientaStepTime" - create_dataset(self.step_time_dataset_name, 'd') - if 'iter' in self.region: - self.iterations_dataset_name = path + "ScientaIterations" - create_dataset(self.iterations_dataset_name, 'd') - if 'slit' in self.region: - self.slit_dataset_name = path + "ExitSlit" - create_dataset(self.slit_dataset_name, 'd') - if 'position' in self.region: - position_names = {key:path + "Position"+ key for key in ['X','Y','Z','Theta','Tilt','Phi']} - self.position_dataset_names = position_names - for datanames in self.position_dataset_names.values(): - create_dataset(datanames, 'd') - - - - def setup(self): - # print("spectrum.setup") - - if self.scan_index != get_exec_pars().index: - self.scan_index = get_exec_pars().index - self.create_datasets() - if self.region_index == 0: - print "scan {0}".format(self.scan_index) - - edelta = 0.0 - try: - ephot = self.region['ephot'] - Eph.move(ephot) - except KeyError: - ephot = Eph.take(100) - - if isinstance(ephot, float) and ephot > 0.: - try: - if self.region['cis']: - edelta = ephot - self.ephot_start - except AttributeError: - self.ephot_start = ephot - - elo = self.region['elo'] + edelta - ehi = self.region['ehi'] + edelta - - if self.region['fixed']: - Scienta.setAcquisitionMode(ch.psi.pshell.epics.Scienta.AcquisitionMode.Fixed) - Scienta.centerEnergy.write(elo) - append_dataset(self.channel_center_dataset_name, elo) - else: - Scienta.setAcquisitionMode(ch.psi.pshell.epics.Scienta.AcquisitionMode.Swept) - Scienta.lowEnergy.write(elo) - Scienta.highEnergy.write(ehi) - Scienta.stepSize.write(self.region['estep']) - append_dataset(self.channel_begin_dataset_name, elo) - append_dataset(self.channel_end_dataset_name, ehi) - append_dataset(self.step_energy_dataset_name, self.region['estep']) - - try: - Scienta.setPassEnergy(int(self.region['epass'])) - append_dataset(self.pass_energy_dataset_name, self.region['epass']) - except KeyError: - pass - - try: - Scienta.stepTime.write(self.region['tstep']) - append_dataset(self.step_time_dataset_name, self.region['tstep']) - except KeyError: - pass - - try: - Scienta.setIterations(self.region['iter']) - append_dataset(self.iterations_dataset_name, self.region['iter']) - except KeyError: - pass - - try: - ExitSlit.write(self.region['slit']) - append_dataset(self.slit_dataset_name, self.region['slit']) - except KeyError: - pass - - if self.region['position'] == 'sample': - move_to_position(SAMPLE_POSITION) - - for name in SAMPLE_POSITION.keys(): - append_dataset(self.position_dataset_names[name], SAMPLE_POSITION[name]) - - - elif self.region['position'] == 'reference': - move_to_position(REFERENCE_POSITION) - - for name in REFERENCE_POSITION.keys(): - append_dataset(self.position_dataset_names[name], SAMPLE_POSITION[name]) - - Scienta.update() - - def read(self): - # print("spectrum.read") - global current_region_index - current_region_index = self.region_index - self.setup() - print("Acquiring region {0}.".format(self.region['name'])) - trig_scienta() - time.sleep(0.5) - sp = Scienta.getSpectrum().read() - return sp - - def getSize(self): - if self.region['fixed']: - nx = 992 - else: - nx = int((self.region['ehi'] - self.region['elo']) / self.region['estep']) + 1 - return nx - - -class ImageReader(ReadonlyRegisterBase, ReadonlyRegisterMatrix): - def read(self): - # print("image.read") - return Scienta.getDataMatrix().read() - - def getWidth(self): - if self.region['fixed']: - nx = 992 - else: - nx = int((self.region['ehi'] - self.region['elo']) / self.region['estep']) + 1 - return nx - - def getHeight(self): - ny = Scienta.slices.read() - return ny - -def setup_live_plots(regions): - global live_plots - global current_region_index - names = [region['name'] for region in regions] - live_plots = plot(None, names, title="Live Spectra") - current_region_index = 0 - -def update_live_plots(): - global live_plots - global current_region_index - try: - while get_context().state.running: - y = Scienta.spectrum.take(100) - x = Scienta.spectrumX - try: - series = live_plots[current_region_index].getSeries(0) - series.setData(x, y) - except IndexError: - pass - time.sleep(1.0) - finally: - print "Stopping live spectra" - -def do_scan(scan, motors, positions, regions, latency): - global SENSORS - - SENSORS = [] - - for (index, region) in enumerate(regions): - check_region(region) - - reader = SpectrumReader() - reader.region_index = index - reader.region_name = "region{0}".format(index + 1) - reader.region = region - reader.initialize() - set_device_alias(reader, reader.region_name + "/ScientaSpectrum") - SENSORS.append(reader) - - image = ImageReader() - image.region_index = index - image.region = region - image.initialize() - set_device_alias(image, reader.region_name + "/ScientaImage") - SENSORS.append(image) - - SENSORS.append(SampleCurrent) - SENSORS.append(RefCurrent) - adjust_sensors() - set_adc_averaging() - - if scan == 'ascan': - ascan(motors, SENSORS, positions[0], positions[1], positions[2], latency, False, zigzag = True, before_read=wait_beam, after_read = after_readout) - elif scan == 'lscan': - lscan(motors, SENSORS, positions[0], positions[1], positions[2], latency, False, before_read=wait_beam, after_read = after_readout) - elif scan == 'vscan': - vscan(motors, SENSORS, positions, True, latency,False, before_read=wait_beam, after_read = after_readout) - else: - print('unknown scan mode {}'.format(scan)) - - for (index, region) in enumerate(regions): - set_attribute(get_exec_pars().scanPath + "region{0}/ScientaSpectrum".format(index + 1), "RegionName", region['name']) - set_attribute(get_exec_pars().scanPath + "region{0}/ScientaImage".format(index + 1), "RegionName", region['name']) - set_attribute(get_exec_pars().scanPath, "Regions", [region['name'] for region in regions]) - -try: - setup_live_plots(REGIONS) - task = fork(update_live_plots) - do_scan(SCAN, MOTORS, POSITIONS, REGIONS, LATENCY) -finally: - if CLOSE_SHUTTER_AT_END: - after_scan() - diff --git a/script/191121-InAs-Overnight.py b/script/191121-InAs-Overnight.py deleted file mode 100644 index 3680fbfd..00000000 --- a/script/191121-InAs-Overnight.py +++ /dev/null @@ -1,340 +0,0 @@ -""" -Line/vector/area/holo scan of multiple spectral regions - -save this script into your script/user folder before editing! - -usage: -1. uncomment one of the MOTORS lines. - add another line if necessary. -2. uncomment one of the scan blocks and adjust the parameters. - add another block if necessary. -3. declare the regions. -4. add the regions to the REGIONS list. -5. run the script. -""" - -# dummy scan (time series) -MOTORS = [dummy] -# photon energy scan (do not include 'ephot' in regions in this case!) -#MOTORS = [Eph] -# phi scan -#MOTORS = [ManipulatorPhi] -# holo scan -#MOTORS = (ManipulatorPhi, ManipulatorTheta) -# 2D YZ scan -#MOTORS = [ManipulatorY, ManipulatorZ] - -# line scan [start, stop, step] -POSITIONS = [0.] -SCAN = 'vscan' - -# vector scan [pos1, pos2, pos3, ...] -#POSITIONS = [600., 900.] -#SCAN = 'vscan' - -# area scan [(start1, start2), (stop1, stop2), (step1, step2)] -# corresponding to (positioner1, positioner2) -#POSITIONS = [(-1., 114.), (+1., 116.), (20, 20)] -#ZIGZAG = True -#SCAN = 'ascan' - -# holo scan -#PHI_RANGE = (-160.0, 160.0) # (tuple (min, max)) -#THETA_RANGE = (-9.0, 81.0) # (tuple (min, max)) -#STEPS = (40.0, 1.0) # (tuple (phi, theta)) -#ZIGZAG = True -#POSITIONS = [(PHI_RANGE[0], THETA_RANGE[0]), (PHI_RANGE[1], THETA_RANGE[1]), STEPS] -#SCAN = 'ascan' - -# seconds to wait between positioning command and triggering the detector -LATENCY = 0.0 - - -# region setup -# -# for each region, define a python dictionary with the following items. -# optional items can be left unspecified and will default to the indicated values. -# for swept mode, include 'elo', 'ehi', 'estep', 'iter' values, but do not include 'efix'. -# for fixed mode, include 'efix' value, but do not include 'elo', 'ehi', 'estep', 'iter'. -# -# 'name': user-specific name of the region (for graph title and RegionName attribute in data file) -# 'elo': lower kinetic energy boundary of the spectrum -# 'ehi': upper kinetic energy boundary of the spectrum -# 'estep': energy step size -# 'efix': center kinetic energy in fixed mode -# 'epass': pass energy -# 'ephot': photon energy (default: unchanged) -# 'tstep': dwell time in seconds -# 'iter': number of iterations/sweeps (default 1) -# 'cis': True = constant initial state (photoemission line), False = constant final state (Auger peak), (default False) -# 'slit': exit slit (default: unchanged) - -# First window should be set to first photon energy (see energies above) - -REFERENCE_POSITION = {'X':3.01 ,'Y':0, 'Z':118, 'Theta':-6.2, 'Tilt':0, 'Phi':0} -SAMPLE_POSITION = {'X':3.01 ,'Y':0, 'Z':118, 'Theta':-6.2, 'Tilt':0, 'Phi':0} - -REGION1 = {'name': 'AuFermi', 'ephot':144. , 'elo': 138.5, 'ehi':140, 'estep':0.01, 'epass': 10., 'tstep': 1., 'iter': 1, 'cis': False, 'position': 'reference'} -REGION2 = {'name': 'VB','ephot':144., 'elo': 138.4, 'ehi':139.8, 'estep':0.01, 'epass': 10., 'tstep': 4., 'iter': 1, 'cis': False, 'position': 'sample'} -REGION3 = {'name': 'As3d','ephot':144., 'elo': 96., 'ehi':101.0, 'estep':0.03, 'epass': 10., 'tstep': 1., 'iter': 1, 'cis': False, 'position': 'sample'} - - -# list of region dictionaries to execute at each scan position -REGIONS = [REGION1, REGION2]#, REGION3, REGION4, REGION5] - -# close beam shutter and turn off analyser at the end of the scan -CLOSE_SHUTTER_AT_END = False - -def move_to_position(pdict): - ManipulatorX.move(pdict['X']) - ManipulatorY.move(pdict['Y']) - ManipulatorZ.move(pdict['Z']) - ManipulatorTheta.move(pdict['Theta']) - ManipulatorTilt.move(pdict['Tilt']) - ManipulatorPhi.move(pdict['Phi']) - -# --- DO NOT EDIT BELOW THIS LINE! --- - - -set_exec_pars(keep=False) - -def check_region(region): - """ - check region dictionary items and apply defaults where necessary - """ - region['fixed'] = 'efix' in region - if region['fixed']: - region['elo'] = region['efix'] - region['ehi'] = region['efix'] - if 'iter' not in region: - region['iter'] = 1 - print("region {0}: setting default iter = {1}".format(region['name'], region['iter'])) - if 'cis' not in region: - region['cis'] = False - print("region {0}: setting default cis = {1}".format(region['name'], region['cis'])) - -class SpectrumReader(ReadonlyRegisterBase, ReadonlyRegisterArray): - def initialize(self): - #super(SpectrumReader, self).initialize() - self.scan_index = -1 - - def create_datasets(self): - path = get_exec_pars().scanPath + self.region_name + "/" - - if self.region['fixed']: - self.channel_center_dataset_name = path + "ScientaChannelCenter" - create_dataset(self.channel_center_dataset_name, 'd') - else: - self.channel_begin_dataset_name = path + "ScientaChannelBegin" - self.channel_end_dataset_name = path + "ScientaChannelEnd" - self.step_energy_dataset_name = path + "ScientaStepEnergy" - create_dataset(self.channel_begin_dataset_name, 'd') - create_dataset(self.channel_end_dataset_name, 'd') - create_dataset(self.step_energy_dataset_name, 'd') - - if 'epass' in self.region: - self.pass_energy_dataset_name = path + "ScientaPassEnergy" - create_dataset(self.pass_energy_dataset_name, 'd') - if 'tstep' in self.region: - self.step_time_dataset_name = path + "ScientaStepTime" - create_dataset(self.step_time_dataset_name, 'd') - if 'iter' in self.region: - self.iterations_dataset_name = path + "ScientaIterations" - create_dataset(self.iterations_dataset_name, 'd') - if 'slit' in self.region: - self.slit_dataset_name = path + "ExitSlit" - create_dataset(self.slit_dataset_name, 'd') - if 'position' in self.region: - position_names = {key:path + "Position"+ key for key in ['X','Y','Z','Theta','Tilt','Phi']} - self.position_dataset_names = position_names - for datanames in self.position_dataset_names.values(): - create_dataset(datanames, 'd') - - - - def setup(self): - # print("spectrum.setup") - - if self.scan_index != get_exec_pars().index: - self.scan_index = get_exec_pars().index - self.create_datasets() - if self.region_index == 0: - print "scan {0}".format(self.scan_index) - - edelta = 0.0 - try: - ephot = self.region['ephot'] - Eph.move(ephot) - except KeyError: - ephot = Eph.take(100) - - if isinstance(ephot, float) and ephot > 0.: - try: - if self.region['cis']: - edelta = ephot - self.ephot_start - except AttributeError: - self.ephot_start = ephot - - elo = self.region['elo'] + edelta - ehi = self.region['ehi'] + edelta - - if self.region['fixed']: - Scienta.setAcquisitionMode(ch.psi.pshell.epics.Scienta.AcquisitionMode.Fixed) - Scienta.centerEnergy.write(elo) - append_dataset(self.channel_center_dataset_name, elo) - else: - Scienta.setAcquisitionMode(ch.psi.pshell.epics.Scienta.AcquisitionMode.Swept) - Scienta.lowEnergy.write(elo) - Scienta.highEnergy.write(ehi) - Scienta.stepSize.write(self.region['estep']) - append_dataset(self.channel_begin_dataset_name, elo) - append_dataset(self.channel_end_dataset_name, ehi) - append_dataset(self.step_energy_dataset_name, self.region['estep']) - - try: - Scienta.setPassEnergy(int(self.region['epass'])) - append_dataset(self.pass_energy_dataset_name, self.region['epass']) - except KeyError: - pass - - try: - Scienta.stepTime.write(self.region['tstep']) - append_dataset(self.step_time_dataset_name, self.region['tstep']) - except KeyError: - pass - - try: - Scienta.setIterations(self.region['iter']) - append_dataset(self.iterations_dataset_name, self.region['iter']) - except KeyError: - pass - - try: - ExitSlit.write(self.region['slit']) - append_dataset(self.slit_dataset_name, self.region['slit']) - except KeyError: - pass - - if self.region['position'] == 'sample': - move_to_position(SAMPLE_POSITION) - - for name in SAMPLE_POSITION.keys(): - append_dataset(self.position_dataset_names[name], SAMPLE_POSITION[name]) - - - elif self.region['position'] == 'reference': - move_to_position(REFERENCE_POSITION) - - for name in REFERENCE_POSITION.keys(): - append_dataset(self.position_dataset_names[name], SAMPLE_POSITION[name]) - - Scienta.update() - - def read(self): - # print("spectrum.read") - global current_region_index - current_region_index = self.region_index - self.setup() - print("Acquiring region {0}.".format(self.region['name'])) - trig_scienta() - time.sleep(0.5) - sp = Scienta.getSpectrum().read() - return sp - - def getSize(self): - if self.region['fixed']: - nx = 992 - else: - nx = int((self.region['ehi'] - self.region['elo']) / self.region['estep']) + 1 - return nx - - -class ImageReader(ReadonlyRegisterBase, ReadonlyRegisterMatrix): - def read(self): - # print("image.read") - return Scienta.getDataMatrix().read() - - def getWidth(self): - if self.region['fixed']: - nx = 992 - else: - nx = int((self.region['ehi'] - self.region['elo']) / self.region['estep']) + 1 - return nx - - def getHeight(self): - ny = Scienta.slices.read() - return ny - -def setup_live_plots(regions): - global live_plots - global current_region_index - names = [region['name'] for region in regions] - live_plots = plot(None, names, title="Live Spectra") - current_region_index = 0 - -def update_live_plots(): - global live_plots - global current_region_index - try: - while get_context().state.running: - y = Scienta.spectrum.take(100) - x = Scienta.spectrumX - try: - series = live_plots[current_region_index].getSeries(0) - series.setData(x, y) - except IndexError: - pass - time.sleep(1.0) - finally: - print "Stopping live spectra" - -def do_scan(scan, motors, positions, regions, latency): - global SENSORS - - SENSORS = [] - - for (index, region) in enumerate(regions): - check_region(region) - - reader = SpectrumReader() - reader.region_index = index - reader.region_name = "region{0}".format(index + 1) - reader.region = region - reader.initialize() - set_device_alias(reader, reader.region_name + "/ScientaSpectrum") - SENSORS.append(reader) - - image = ImageReader() - image.region_index = index - image.region = region - image.initialize() - set_device_alias(image, reader.region_name + "/ScientaImage") - SENSORS.append(image) - - SENSORS.append(SampleCurrent) - SENSORS.append(RefCurrent) - adjust_sensors() - set_adc_averaging() - - if scan == 'ascan': - ascan(motors, SENSORS, positions[0], positions[1], positions[2], latency, False, zigzag = True, before_read=wait_beam, after_read = after_readout) - elif scan == 'lscan': - lscan(motors, SENSORS, positions[0], positions[1], positions[2], latency, False, before_read=wait_beam, after_read = after_readout) - elif scan == 'vscan': - vscan(motors, SENSORS, positions, True, latency,False, before_read=wait_beam, after_read = after_readout) - else: - print('unknown scan mode {}'.format(scan)) - - for (index, region) in enumerate(regions): - set_attribute(get_exec_pars().scanPath + "region{0}/ScientaSpectrum".format(index + 1), "RegionName", region['name']) - set_attribute(get_exec_pars().scanPath + "region{0}/ScientaImage".format(index + 1), "RegionName", region['name']) - set_attribute(get_exec_pars().scanPath, "Regions", [region['name'] for region in regions]) - -try: - setup_live_plots(REGIONS) - task = fork(update_live_plots) - do_scan(SCAN, MOTORS, POSITIONS, REGIONS, LATENCY) -finally: - if CLOSE_SHUTTER_AT_END: - after_scan() - diff --git a/script/191122-dev-move.py b/script/191122-dev-move.py deleted file mode 100644 index 8413213f..00000000 --- a/script/191122-dev-move.py +++ /dev/null @@ -1,316 +0,0 @@ -""" -Discrete scan (vector scan) of multiple spectral regions -""" - -# scan positioner: Eph = photon energy -#MOTORS = (ManipulatorPhi, ManipulatorTheta) -#MOTORS = [ManipulatorPhi] -MOTORS = [dummy] -# comma-separated discrete list of scan positions -#POSITIONS = [(PHI_RA -#POSITIONS = [(PNGE[0], THETA_RANGE[0]), (PHI_RANGE[1], THETA_RANGE[1]), STEPS] -#POSITIONS = [-175., 180., 5.] -# seconds to wait between positioning command and triggering the detector -LATENCY = 0.0 - -# region setup -# -# for each region, define a python dictionary with the following items. -# optional items can be left unspecified and will default to the indicated values. -# for swept mode, include 'elo', 'ehi', 'estep', 'iter' values, but do not include 'efix'. -# for fixed mode, include 'efix' value, but do not include 'elo', 'ehi', 'estep', 'iter'. -# -# 'name': user-specific name of the region (for graph title and RegionName attribute in data file) -# 'elo': lower kinetic energy boundary of the spectrum -# 'ehi': upper kinetic energy boundary of the spectrum -# 'estep': energy step size -# 'efix': center kinetic energy in fixed mode -# 'epass': pass energy -# 'tstep': dwell time in seconds -# 'iter': number of iterations/sweeps (default 1) -# 'cis': True = constant initial state (photoemission line), False = constant final state (Auger peak), (default False) -# 'slit': exit slit (default current value) - -#REGION1 = {'name': 'VB62eV', 'ephot': 62, 'efix': 1222.1, 'epass': 200., 'tstep': 20., 'iter': 1, 'cis': False} -#REGION2 = {'name': 'off-resonance', 'ephot': 1235.0, 'efix': 1219.4, 'epass': 200., 'tstep': 20., 'iter': 1, 'cis': False} -#REGION1 = {'name': 'VB62eV', 'ephot': 62, 'elo': 49.0, 'ehi': 58.0, 'estep': 0.002, 'epass': 10, 'tstep': 0.5, 'iter': 1, 'cis': False} -#REGION1 = {'name': 'VB62eVzoom', 'elo': 54.0, 'ehi': 58.0, 'estep': 0.002, 'epass': 10.0, 'tstep': 0.5, 'iter': 1, 'cis': True} - -# close beam shutter and turn off analyser at the end of the scan -CLOSE_SHUTTER_AT_END = False - - -# --- DO NOT EDIT BELOW THIS LINE! --- - -set_exec_pars(keep=False) - -def check_region(region): - """ - check region dictionary items and apply defaults where necessary - """ - region['fixed'] = 'efix' in region - if region['fixed']: - region['elo'] = region['efix'] - region['ehi'] = region['efix'] - if 'iter' not in region: - region['iter'] = 1 - print("region {0}: setting default iter = {1}".format(region['name'], region['iter'])) - if 'cis' not in region: - region['cis'] = False - print("region {0}: setting default cis = {1}".format(region['name'], region['cis'])) - if 'slit' not in region: - region['slit'] = ExitSlit.read() - print("region {0}: setting default slit = {1}".format(region['name'], region['slit'])) - -class SpectrumReader(ReadonlyRegisterBase, ReadonlyRegisterArray): - def initialize(self): - #super(SpectrumReader, self).initialize() - self.scan_index = -1 - - def create_datasets(self): - path = get_exec_pars().scanPath + self.region_name + "/" - - self.channel_begin_dataset_name = path + "ScientaChannelBegin" - self.channel_end_dataset_name = path + "ScientaChannelEnd" - self.channel_center_dataset_name = path + "ScientaChannelCenter" - self.pass_energy_dataset_name = path + "ScientaPassEnergy" - self.step_energy_dataset_name = path + "ScientaStepEnergy" - self.step_time_dataset_name = path + "ScientaStepTime" - self.iterations_dataset_name = path + "ScientaIterations" - self.slit_dataset_name = path + "ExitSlit" - - create_dataset(self.channel_begin_dataset_name, 'd') - create_dataset(self.channel_end_dataset_name, 'd') - create_dataset(self.channel_center_dataset_name, 'd') - create_dataset(self.pass_energy_dataset_name, 'd') - create_dataset(self.step_energy_dataset_name, 'd') - create_dataset(self.step_time_dataset_name, 'd') - create_dataset(self.iterations_dataset_name, 'd') - create_dataset(self.slit_dataset_name, 'd') - - def setup(self): - if self.scan_index != get_exec_pars().index: - self.scan_index = get_exec_pars().index - self.create_datasets() - if self.region_index == 0: - print "scan {0}".format(self.scan_index) - - #ephot = Eph.read() - #try: - # if self.region['cis']: - # edelta = ephot - self.ephot_start - # else: - # edelta = 0.0 - #except AttributeError: - # self.ephot_start = ephot - edelta = 0.0 - - elo = self.region['elo'] + edelta - ehi = self.region['ehi'] + edelta - - try: - Eph.write(self.region['ephot']) - except KeyError: - pass - - if self.region['fixed']: - Scienta.setAcquisitionMode(ch.psi.pshell.epics.Scienta.AcquisitionMode.Fixed) - Scienta.centerEnergy.write(elo) - else: - Scienta.setAcquisitionMode(ch.psi.pshell.epics.Scienta.AcquisitionMode.Swept) - Scienta.lowEnergy.write(elo) - Scienta.highEnergy.write(ehi) - Scienta.stepSize.write(self.region['estep']) - - Scienta.setPassEnergy(int(self.region['epass'])) - Scienta.stepTime.write(self.region['tstep']) - Scienta.setIterations(self.region['iter']) - ExitSlit.write(self.region['slit']) - Scienta.update() - - if self.region['fixed']: - append_dataset(self.channel_center_dataset_name, elo) - else: - append_dataset(self.channel_begin_dataset_name, elo) - append_dataset(self.channel_end_dataset_name, ehi) - append_dataset(self.step_energy_dataset_name, self.region['estep']) - - append_dataset(self.pass_energy_dataset_name, self.region['epass']) - append_dataset(self.step_time_dataset_name, self.region['tstep']) - append_dataset(self.iterations_dataset_name, self.region['iter']) - append_dataset(self.slit_dataset_name, self.region['slit']) - - def read(self): - global current_region_index - current_region_index = self.region_index - self.setup() - print("Acquiring region {0}.".format(self.region['name'])) - trig_scienta() - time.sleep(0.5) - sp = Scienta.getSpectrum().read() - return sp - - def getSize(self): - if self.region['fixed']: - nx = 992 - else: - 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): - if self.region['fixed']: - nx = 992 - else: - nx = int((self.region['ehi'] - self.region['elo']) / self.region['estep']) + 1 - return nx - - def getHeight(self): - ny = Scienta.slices.read() - return ny - -def setup_live_plots(regions): - global live_plots - global current_region_index - names = [region['name'] for region in regions] - live_plots = plot(None, names, title="Live Spectra") - current_region_index = 0 - -def update_live_plots(): - global live_plots - global current_region_index - try: - while get_context().state.running: - y = Scienta.spectrum.take(100) - x = Scienta.spectrumX - try: - series = live_plots[current_region_index].getSeries(0) - series.setData(x, y) - except IndexError: - pass - time.sleep(1.0) - finally: - print "Stopping live spectra" - -def do_scan(motors, positions, regions, latency): - global SENSORS - - SENSORS = [] - - - for (index, region) in enumerate(regions): - - check_region(region) - - - reader = SpectrumReader() - reader.region_index = index - reader.region_name = "region{0}".format(index + 1) - reader.region = region - reader.initialize() - set_device_alias(reader, reader.region_name + "/ScientaSpectrum") - SENSORS.append(reader) - - image = ImageReader() - image.region_index = index - image.region = region - image.initialize() - set_device_alias(image, reader.region_name + "/ScientaImage") - SENSORS.append(image) - - - SENSORS.append(SampleCurrent) - SENSORS.append(RefCurrent) - adjust_sensors() - set_adc_averaging() - - #ascan(motors, SENSORS, positions[0], positions[1], positions[2], latency, False, zigzag = True, before_read=wait_beam, after_read = after_readout) - #lscan(motors, SENSORS, positions[0], positions[1], positions[2], latency, False, before_read=wait_beam, after_read = after_readout) - vscan(motors, SENSORS, positions, True, latency,False, before_read=wait_beam, after_read = after_readout) - - - for (index, region) in enumerate(regions): - set_attribute(get_exec_pars().scanPath + "region{0}/ScientaSpectrum".format(index + 1), "RegionName", region['name']) - set_attribute(get_exec_pars().scanPath + "region{0}/ScientaImage".format(index + 1), "RegionName", region['name']) - set_attribute(get_exec_pars().scanPath, "Regions", [region['name'] for region in regions]) - - - -class PhysicalLocation(): - def __init__(self, X, Y, Z, theta, tilt, phi): - self.X = X - self.Y = Y - self.Z = Z - self.theta = theta - self.tilt = tilt - self.phi = phi - - def move_to_location(self): - ManipulatorX.move(self.X) - ManipulatorY.move(self.Y) - ManipulatorZ.move(self.Z) - ManipulatorTheta.move(self.theta) - ManipulatorTilt.move(self.tilt) - ManipulatorPhi.move(self.phi) - -#VARS -sample = PhysicalLocation(-4.1,-0.5,115.1,-8.8,0.7,-90.0) -goldReference = PhysicalLocation(-3.4,4.4,111.6,-8.8,0.7,90.0) -dosing = PhysicalLocation(-4.1,-0.5,115.1,51.0,0.7,-90.0) - -sample.move_to_location() - -energies = [300,400,500] - -for e in energies: - try: - Eph.move(e) - - goldReference.move_to_location() - - goldRegions = goldRegion(e, "fixed") - - do_scan(MOTORS, POSITIONS, goldRegions, LATENCY) - - sample.move_to_location() - - sampleRegions = - - do_scan(MOTORS, POSITIONS, sampleRegions, LATENCY) - -def goldRegion(energy, scan_type): - if scan_type == "fixed": - return [{'name': 'Au', 'ephot': 1237.7, 'efix': 1222.1, 'epass': 50., 'tstep': 5., 'iter': 1, 'cis': False}] - elif scan_type == "swept": - return [{'name': 'Au', 'elo': 54.0, 'ehi': 58.0, 'estep': 0.002, 'epass': 10.0, 'tstep': 0.5, 'iter': 1, 'cis': False}] - -def sampleRegion(energy, scan_type): - epass = 10.0 - tstep = 0.5 - estep = 0.002 - if scan_type == "In4d": - e1 = energy - 4.5 - 18 - e2 = energy - 4.5 - 17 - return [{'name': scan_type, 'elo': 54.0, 'ehi': 58.0, 'estep': estep, 'epass': epass, 'tstep': tstep, 'iter': 1, 'cis': False}] - - elif scan_type == "Sb4d": - e1 = energy - 4.5 - 33 - e2 = energy - 4.5 - 32 - - elif scan_type == "In3d": - e1 = energy - 4.5 - 451 - e2 = energy - 4.5 - 444 - return [{'name': scan_type, 'elo': 54.0, 'ehi': 58.0, 'estep': estep, 'epass': epass, 'tstep': tstep, 'iter': 1, 'cis': False}] - - - - goldReference.move_to_location() - thisregion = - - - sample.move_to_location() - thisregion = {'name': 'In3d', 'ephot': 1237.7, 'efix': 1222.1, 'epass': 50., 'tstep': 5., 'iter': 1, 'cis': False} \ No newline at end of file diff --git a/script/191122-overnight.py b/script/191122-overnight.py deleted file mode 100644 index b74f3e4e..00000000 --- a/script/191122-overnight.py +++ /dev/null @@ -1,88 +0,0 @@ - - -import ch.psi.pshell.plot.RangeSelectionPlot.RangeSelection as RangeSelection - -REFERENCE_POSITION = {'X':1.4 ,'Y':0.0, 'Z':110.6, 'Theta':-9.1, 'Tilt':0.8, 'Phi':-90.0} -SAMPLE_POSITION = {'X':1.4 ,'Y':0.6, 'Z':116.5, 'Theta':-9.1, 'Tilt':0.8, 'Phi':-90.0} - -def move_to_position(pdict): - ManipulatorX.move(pdict['X']) - ManipulatorY.move(pdict['Y']) - ManipulatorZ.move(pdict['Z']) - ManipulatorTheta.move(pdict['Theta']) - ManipulatorTilt.move(pdict['Tilt']) - ManipulatorPhi.move(pdict['Phi']) - - -binding_center_Au_Ef=0.; -window_Au_Ef=4.; -time_Au_Ef = 15. - -binding_center_Au_4f=86.; -window_Au_4f=15.; -time_Au_4f = 2. - -binding_center_As_3d=43.; -window_As_3d=15.; -time_As_3d=50. - -energies = [1450,950,450] - -exit_slit_dict = {1450:50, 950:25, 450:25} -pass_energy_dict = {1450:50, 950:20, 450:20} - -for e in energies: - - photon_energy = float(e) - ExitSlit.write(exit_slit_dict[e]) - - ##################################################### - #Au-fermi - set_exec_pars(name="Au-Fermi-"+str(e)+"eV") - move_to_position(REFERENCE_POSITION) - - center_Au = photon_energy - 4.5 - binding_center_Au_Ef - rs = RangeSelection(center_Au-window_Au_Ef/2.,center_Au+window_Au_Ef/2.) - rs.setVars([time_Au_Ef, 0.05, 1, photon_energy]) #Time, Size, Iteration, photon energy - - - - run("XPSSpectrum", {"save_scienta_image":True, - "ranges":[rs, ], - "ENDSCAN":False, - "pass_energy":pass_energy_dict[e]}) - - set_exec_pars(open=False) - - ##################################################### - #Au-4f - set_exec_pars(name="Au-4f-"+str(e)+"eV") - center_Au_4f = photon_energy - 4.5 - binding_center_Au_4f - rs = RangeSelection(center_Au_4f-window_Au_4f/2.,center_Au_4f+window_Au_4f/2.) - rs.setVars([time_Au_4f, 0.05, 1, photon_energy]) #Time, Size, Iteration, photon energy - - - run("XPSSpectrum", {"save_scienta_image":True, - "ranges":[rs, ], - "ENDSCAN":False, - "pass_energy":pass_energy_dict[e]}) - - set_exec_pars(open=False) - - ##################################################### - #As - set_exec_pars(name="As-3d-"+str(e)+"eV") - move_to_position(SAMPLE_POSITION) - center_As_3d = photon_energy - 4.5 - binding_center_As_3d - rs = RangeSelection(center_As_3d-window_As_3d/2.,center_As_3d+window_As_3d/2.) - - rs.setVars([time_As_3d, 0.05, 1, photon_energy]) #Time, Size, Iteration, photon energy - - run("XPSSpectrum", {"save_scienta_image":True, - "ranges":[rs, ], - "ENDSCAN":False, - "pass_energy":pass_energy_dict[e]}) - - set_exec_pars(open=False) - - diff --git a/script/191122-pretest-overnight.py b/script/191122-pretest-overnight.py deleted file mode 100644 index c3626407..00000000 --- a/script/191122-pretest-overnight.py +++ /dev/null @@ -1,84 +0,0 @@ - - -import ch.psi.pshell.plot.RangeSelectionPlot.RangeSelection as RangeSelection - -REFERENCE_POSITION = {'X':1.4 ,'Y':0.0, 'Z':110.6, 'Theta':-9.1, 'Tilt':0.8, 'Phi':-90.0} -SAMPLE_POSITION = {'X':1.4 ,'Y':0.6, 'Z':116.5, 'Theta':-9.1, 'Tilt':0.8, 'Phi':-90.0} - -def move_to_position(pdict): - ManipulatorX.move(pdict['X']) - ManipulatorY.move(pdict['Y']) - ManipulatorZ.move(pdict['Z']) - ManipulatorTheta.move(pdict['Theta']) - ManipulatorTilt.move(pdict['Tilt']) - ManipulatorPhi.move(pdict['Phi']) - - -binding_center_Au_Ef=0.; -window_Au_Ef=4.; -time_Au_Ef = 0.01 - -binding_center_Au_4f=86.; -window_Au_4f=15.; -time_Au_4f = 0.01 - -binding_center_As_3d=43.; -window_As_3d=15.; -time_As_3d=0.01 - -energies = [1450,950,450] - -for e in energies: - - photon_energy = float(e) - - ##################################################### - #Au-fermi - set_exec_pars(name="Au-Fermi-"+str(e)+"eV") - move_to_position(REFERENCE_POSITION) - - center_Au = photon_energy - 4.5 - binding_center_Au_Ef - rs = RangeSelection(center_Au-window_Au_Ef/2.,center_Au+window_Au_Ef/2.) - rs.setVars([time_Au_Ef, 0.05, 1, photon_energy]) #Time, Size, Iteration, photon energy - - - - run("XPSSpectrum", {"save_scienta_image":True, - "ranges":[rs, ], - "ENDSCAN":False, - "pass_energy":50}) - - set_exec_pars(open=False) - - ##################################################### - #Au-4f - set_exec_pars(name="Au-4f-"+str(e)+"eV") - center_Au_4f = photon_energy - 4.5 - binding_center_Au_4f - rs = RangeSelection(center_Au_4f-window_Au_4f/2.,center_Au_4f+window_Au_4f/2.) - rs.setVars([time_Au_4f, 0.05, 1, photon_energy]) #Time, Size, Iteration, photon energy - - - run("XPSSpectrum", {"save_scienta_image":True, - "ranges":[rs, ], - "ENDSCAN":False, - "pass_energy":50}) - - set_exec_pars(open=False) - - ##################################################### - #As - set_exec_pars(name="As-3d-"+str(e)+"eV") - move_to_position(SAMPLE_POSITION) - center_As_3d = photon_energy - 4.5 - binding_center_As_3d - rs = RangeSelection(center_As_3d-window_As_3d/2.,center_As_3d+window_As_3d/2.) - - rs.setVars([time_As_3d, 0.05, 1, photon_energy]) #Time, Size, Iteration, photon energy - - run("XPSSpectrum", {"save_scienta_image":True, - "ranges":[rs, ], - "ENDSCAN":False, - "pass_energy":50}) - - set_exec_pars(open=False) - - diff --git a/script/191123-Au4f-stability-test.py b/script/191123-Au4f-stability-test.py deleted file mode 100644 index b74f3e4e..00000000 --- a/script/191123-Au4f-stability-test.py +++ /dev/null @@ -1,88 +0,0 @@ - - -import ch.psi.pshell.plot.RangeSelectionPlot.RangeSelection as RangeSelection - -REFERENCE_POSITION = {'X':1.4 ,'Y':0.0, 'Z':110.6, 'Theta':-9.1, 'Tilt':0.8, 'Phi':-90.0} -SAMPLE_POSITION = {'X':1.4 ,'Y':0.6, 'Z':116.5, 'Theta':-9.1, 'Tilt':0.8, 'Phi':-90.0} - -def move_to_position(pdict): - ManipulatorX.move(pdict['X']) - ManipulatorY.move(pdict['Y']) - ManipulatorZ.move(pdict['Z']) - ManipulatorTheta.move(pdict['Theta']) - ManipulatorTilt.move(pdict['Tilt']) - ManipulatorPhi.move(pdict['Phi']) - - -binding_center_Au_Ef=0.; -window_Au_Ef=4.; -time_Au_Ef = 15. - -binding_center_Au_4f=86.; -window_Au_4f=15.; -time_Au_4f = 2. - -binding_center_As_3d=43.; -window_As_3d=15.; -time_As_3d=50. - -energies = [1450,950,450] - -exit_slit_dict = {1450:50, 950:25, 450:25} -pass_energy_dict = {1450:50, 950:20, 450:20} - -for e in energies: - - photon_energy = float(e) - ExitSlit.write(exit_slit_dict[e]) - - ##################################################### - #Au-fermi - set_exec_pars(name="Au-Fermi-"+str(e)+"eV") - move_to_position(REFERENCE_POSITION) - - center_Au = photon_energy - 4.5 - binding_center_Au_Ef - rs = RangeSelection(center_Au-window_Au_Ef/2.,center_Au+window_Au_Ef/2.) - rs.setVars([time_Au_Ef, 0.05, 1, photon_energy]) #Time, Size, Iteration, photon energy - - - - run("XPSSpectrum", {"save_scienta_image":True, - "ranges":[rs, ], - "ENDSCAN":False, - "pass_energy":pass_energy_dict[e]}) - - set_exec_pars(open=False) - - ##################################################### - #Au-4f - set_exec_pars(name="Au-4f-"+str(e)+"eV") - center_Au_4f = photon_energy - 4.5 - binding_center_Au_4f - rs = RangeSelection(center_Au_4f-window_Au_4f/2.,center_Au_4f+window_Au_4f/2.) - rs.setVars([time_Au_4f, 0.05, 1, photon_energy]) #Time, Size, Iteration, photon energy - - - run("XPSSpectrum", {"save_scienta_image":True, - "ranges":[rs, ], - "ENDSCAN":False, - "pass_energy":pass_energy_dict[e]}) - - set_exec_pars(open=False) - - ##################################################### - #As - set_exec_pars(name="As-3d-"+str(e)+"eV") - move_to_position(SAMPLE_POSITION) - center_As_3d = photon_energy - 4.5 - binding_center_As_3d - rs = RangeSelection(center_As_3d-window_As_3d/2.,center_As_3d+window_As_3d/2.) - - rs.setVars([time_As_3d, 0.05, 1, photon_energy]) #Time, Size, Iteration, photon energy - - run("XPSSpectrum", {"save_scienta_image":True, - "ranges":[rs, ], - "ENDSCAN":False, - "pass_energy":pass_energy_dict[e]}) - - set_exec_pars(open=False) - -