Files
x03da/script/QueuedHoloScan.py
gac-x03da 0c39d78c44 Startup
2021-11-04 21:49:21 +01:00

99 lines
2.6 KiB
Python

"""
parametric holo scan of one spectral regions for pshell queue
parameters:
phi_range: (tuple (min, max)) defaults to hard-coded PHI_RANGE
theta_range: (tuple (min, max)) defaults to hard-coded THETA_RANGE
steps: (tuple (phi, theta)) defaults to hard-coded STEPS
for swept mode, include 'elo', 'ehi', 'estep', 'iterations' values, but do not include 'efix'.
for fixed mode, include 'efix' value, but do not include 'elo', 'ehi', 'estep', 'iterations'.
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
iterations: number of iterations/sweeps (default 1)
slit: exit slit (default: unchanged)
motors: (sequence, optional) position devices
sensors: (sequence, optional) sensor devices
"""
MOTORS = (ManipulatorPhi, ManipulatorTheta)
SENSORS = (Counts, SampleCurrent, RefCurrent, MachineCurrent, EnergyDistribution, AngleDistribution, Scienta.dataMatrix)
PHI_RANGE = (-170.0, 170.0) # (tuple (min, max))
THETA_RANGE = (-9.5, 80.5) # (tuple (min, max))
STEPS = (40.0, 1.0) # (tuple (phi, theta))
ZIGZAG = True
LATENCY=0.0
# close beam shutter and turn off analyser at the end of the scan
CLOSE_SHUTTER_AT_END = False
# --- DO NOT EDIT BELOW THIS LINE! ---
motors = MOTORS
sensors = SENSORS
phi_range = PHI_RANGE
theta_range = THETA_RANGE
steps = STEPS
zigzag = ZIGZAG
latency = LATENCY
positions = [(phi_range[0], theta_range[0]), (phi_range[1], theta_range[1]), steps]
set_exec_pars(keep=False)
set_exec_pars(compression=True)
try:
Eph.move(ephot)
except NameError:
ephot = Eph.take(100)
try:
Scienta.centerEnergy.write(efix)
Scienta.setAcquisitionMode(ch.psi.pshell.epics.Scienta.AcquisitionMode.Fixed)
except NameError:
Scienta.setAcquisitionMode(ch.psi.pshell.epics.Scienta.AcquisitionMode.Swept)
Scienta.lowEnergy.write(elo)
Scienta.highEnergy.write(ehi)
Scienta.stepSize.write(estep)
try:
Scienta.setPassEnergy(int(epass))
except NameError:
pass
try:
Scienta.stepTime.write(tstep)
except NameError:
pass
try:
Scienta.setIterations(iterations)
except NameError:
pass
try:
ExitSlit.write(slit)
except NameError:
pass
Scienta.update()
adjust_sensors()
set_adc_averaging()
try:
ascan(motors, sensors, positions[0], positions[1], positions[2], latency, False, zigzag=zigzag, before_read=before_readout, after_read = after_readout, check_positions=False)
finally:
if CLOSE_SHUTTER_AT_END:
after_scan()