Closedown
This commit is contained in:
@@ -1,33 +0,0 @@
|
||||
"""
|
||||
Arguments:
|
||||
|
||||
MOTOR (device)
|
||||
SENSORS (list)
|
||||
RANGE (tuple (min, max))
|
||||
STEPS (int or tuple)
|
||||
LATENCY (double)
|
||||
RELATIVE (BOOLEAN)
|
||||
"""
|
||||
|
||||
STEPS = (1.0)
|
||||
LATENCY = 0.0
|
||||
ENDSCAN = False
|
||||
ZIGZAG = False
|
||||
|
||||
MOTORS = (ManipulatorTheta)
|
||||
SENSORS = (Counts,Scienta.dataMatrix, SampleCurrent, RefCurrent, MachineCurrent, EnergyDistribution, AngleDistribution)
|
||||
STARTPOS = (-11.0)
|
||||
ENDPOS = (+20.0)
|
||||
RELATIVE = False
|
||||
|
||||
#set_preference(Preference.PLOT_TYPES,{'ImageIntegrator':1})
|
||||
adjust_sensors()
|
||||
set_adc_averaging()
|
||||
#set_preference(Preference.PLOT_TYPES, {'Scienta spectrum':1})
|
||||
|
||||
try:
|
||||
lscan(MOTORS, SENSORS, STARTPOS, ENDPOS, STEPS, LATENCY, RELATIVE, before_read=before_readout, after_read = after_readout)
|
||||
finally:
|
||||
if ENDSCAN:
|
||||
after_scan()
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
"""
|
||||
manipulator grid scan at non-normal theta angle
|
||||
|
||||
set manipulator scan parameters below.
|
||||
set analyser parameters separately!
|
||||
move manipulator to center position before start!
|
||||
|
||||
"""
|
||||
|
||||
import math
|
||||
|
||||
# adjust the following parameters
|
||||
DISTANCE_XY = 1.0
|
||||
DISTANCE_Z = 1.0
|
||||
ANGLE = -30.0 # move the sample perpendicularly across the beam
|
||||
#ANGLE = +60.0 # move the sample along the beam
|
||||
POINTS_XY = 3
|
||||
POINTS_Z = 3
|
||||
|
||||
SENSORS = (Counts, Scienta.spectrum, SampleCurrent, RefCurrent, MachineCurrent, EnergyDistribution, AngleDistribution)
|
||||
#SENSORS = (Counts, Scienta.dataMatrix, SampleCurrent, RefCurrent, MachineCurrent, EnergyDistribution, AngleDistribution)
|
||||
LATENCY = 1.0
|
||||
ENDSCAN = True
|
||||
|
||||
# do not edit below
|
||||
DISTANCE_X = DISTANCE_XY * math.cos(math.radians(ANGLE))
|
||||
DISTANCE_Y = DISTANCE_XY * math.sin(math.radians(ANGLE))
|
||||
|
||||
RELATIVE = True
|
||||
TOTAL_POINTS = POINTS_XY * POINTS_Z
|
||||
zv = [(int(i / POINTS_Z) - (POINTS_Z - 1) / 2.) * DISTANCE_Z / 2. for i in range(TOTAL_POINTS)]
|
||||
xyv = [((i % POINTS_Z) - (POINTS_XY - 1) / 2.) * DISTANCE_XY / 2. for i in range(TOTAL_POINTS)]
|
||||
xv = [xy * math.cos(math.radians(ANGLE)) for xy in xyv]
|
||||
yv = [xy * math.sin(math.radians(ANGLE)) for xy in xyv]
|
||||
|
||||
VECTOR = [[xv[i], yv[i], zv[i]] for i in range(TOTAL_POINTS)]
|
||||
|
||||
MOTORS = (ManipulatorX, ManipulatorY, ManipulatorZ)
|
||||
|
||||
adjust_sensors()
|
||||
set_adc_averaging()
|
||||
|
||||
try:
|
||||
vscan(MOTORS, SENSORS, VECTOR, line=False, latency=LATENCY, relative=RELATIVE, before_read=before_readout, after_read=after_readout)
|
||||
finally:
|
||||
if ENDSCAN:
|
||||
after_scan()
|
||||
|
||||
@@ -1,96 +0,0 @@
|
||||
"""
|
||||
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 = 2.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 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])
|
||||
|
||||
class SpectrumReader2(SpectrumReader):
|
||||
def setup(self):
|
||||
global initial_energy_range
|
||||
Scienta.getLowEnergy().write(initial_energy_range[1][0] + self.offset)
|
||||
Scienta.getHighEnergy().write(initial_energy_range[1][1] + self.offset)
|
||||
Scienta.getStepSize().write(initial_energy_range[1][2])
|
||||
|
||||
class SpectrumReader3(SpectrumReader):
|
||||
def setup(self):
|
||||
global initial_energy_range
|
||||
Scienta.getLowEnergy().write(initial_energy_range[2][0] + self.offset)
|
||||
Scienta.getHighEnergy().write(initial_energy_range[2][1] + self.offset)
|
||||
Scienta.getStepSize().write(initial_energy_range[2][2])
|
||||
|
||||
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 VECTOR
|
||||
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)
|
||||
|
||||
adjust_sensors()
|
||||
set_adc_averaging()
|
||||
set_preference(Preference.PLOT_TYPES, {'Scienta spectrum':1})
|
||||
|
||||
vscan(Eph, SENSORS, VECTOR, True, LATENCY,False, before_read=wait_beam, after_read = after_readout)
|
||||
|
||||
global initial_energy_range, VECTOR, SENSORS
|
||||
SENSORS = []
|
||||
|
||||
# N 1s, azi = 21.1, -8.9; tilt = 0.5, 0.5
|
||||
VECTOR = [425.0 + i * 2.5 for i in range(121)]
|
||||
initial_energy_range = [[19.0, 26.0, 0.1],
|
||||
[26.0, 36.0, 0.5]]
|
||||
|
||||
# B 1s; azi = 21.1; tilt = 25.5; 2 sweeps
|
||||
VECTOR = [213.0 + i * 2.5 for i in range(121)]
|
||||
initial_energy_range = [[19.0, 26.0, 0.1],
|
||||
[26.0, 36.0, 0.5]]
|
||||
|
||||
measure_stuff()
|
||||
@@ -1,46 +0,0 @@
|
||||
"""
|
||||
Scan refocusing mirror RY and manipulator X in parallel (to find analyser focus).
|
||||
Beam stays on same spot on the sample.
|
||||
|
||||
set scan parameters below.
|
||||
set analyser parameters separately!
|
||||
move manipulator and mirror to center position before start!
|
||||
"""
|
||||
|
||||
import math
|
||||
|
||||
# adjust the following parameters
|
||||
DISTANCE_X = 1.0 # mm
|
||||
#DISTANCE_Ry = 0.5 # mrad (Ry)
|
||||
SLOPE = 1.0/0.24 # mm/mrad (DX / DRy)
|
||||
STEPS = 120
|
||||
LATENCY = 0.0
|
||||
ENDSCAN = False
|
||||
|
||||
# do not edit below
|
||||
#DISTANCE_X = DISTANCE_Ry * SLOPE
|
||||
DISTANCE_Ry = DISTANCE_X / SLOPE
|
||||
|
||||
MOTOR = (RefocusYRot, ManipulatorX)
|
||||
SENSORS = (Counts, SampleCurrent, RefCurrent, MachineCurrent, EnergyDistribution, AngleDistribution)
|
||||
STARTPOS = (-DISTANCE_Ry / 2.0, -DISTANCE_X / 2.0)
|
||||
ENDPOS = (DISTANCE_Ry / 2.0, DISTANCE_X / 2.0)
|
||||
RELATIVE = True
|
||||
|
||||
#STARTPOS = (-1.670, -5.000)
|
||||
#ENDPOS = (-0.330, 1.000)
|
||||
#RELATIVE = False
|
||||
|
||||
adjust_sensors()
|
||||
set_adc_averaging()
|
||||
|
||||
def trig_sensors():
|
||||
wait_beam()
|
||||
caput("X03DA-OP-10ADC:TRG.PROC", 1)
|
||||
trig_scienta()
|
||||
|
||||
try:
|
||||
lscan(MOTOR, SENSORS, STARTPOS, ENDPOS, STEPS, LATENCY, RELATIVE, before_read=trig_sensors, after_read = after_readout)
|
||||
finally:
|
||||
if ENDSCAN:
|
||||
after_scan()
|
||||
@@ -1,38 +0,0 @@
|
||||
"""
|
||||
Scan refocusing mirror ROZ and manipulator X in parallel (to find analyser focus).
|
||||
Beam stays on same spot on the sample.
|
||||
|
||||
set scan parameters below.
|
||||
set analyser parameters separately!
|
||||
move manipulator and mirror to center position before start!
|
||||
"""
|
||||
|
||||
import math
|
||||
|
||||
# adjust the following parameters
|
||||
STEPS = 25
|
||||
LATENCY = 0.0
|
||||
ENDSCAN = False
|
||||
|
||||
# do not edit below
|
||||
|
||||
MOTOR = (RefocusZRot, ManipulatorZ)
|
||||
SENSORS = (Counts, SampleCurrent, RefCurrent, MachineCurrent, EnergyDistribution, AngleDistribution)
|
||||
|
||||
STARTPOS = (-2.000, 114.9)
|
||||
ENDPOS = (-1.259, 115.1)
|
||||
RELATIVE = False
|
||||
|
||||
adjust_sensors()
|
||||
set_adc_averaging()
|
||||
|
||||
def trig_sensors():
|
||||
wait_beam()
|
||||
trig_scienta()
|
||||
caput("X03DA-OP-10ADC:TRG.PROC", 1)
|
||||
|
||||
try:
|
||||
lscan(MOTOR, SENSORS, STARTPOS, ENDPOS, STEPS, LATENCY, RELATIVE, before_read=trig_sensors, after_read = after_readout)
|
||||
finally:
|
||||
if ENDSCAN:
|
||||
after_scan()
|
||||
@@ -1,36 +0,0 @@
|
||||
"""
|
||||
Scan refocusing mirror Y and manipulator Z in parallel (to find analyser focus).
|
||||
Beam stays on same spot on the sample.
|
||||
|
||||
set scan parameters below.
|
||||
set analyser parameters separately!
|
||||
move manipulator and mirror to center position before start!
|
||||
"""
|
||||
|
||||
import math
|
||||
|
||||
# adjust the following parameters
|
||||
STEPS = 20
|
||||
LATENCY = 0.0
|
||||
ENDSCAN = False
|
||||
|
||||
MOTOR = (RefocusYTrans, ManipulatorZ)
|
||||
SENSORS = (Counts, SampleCurrent, RefCurrent, MachineCurrent, EnergyDistribution, AngleDistribution)
|
||||
|
||||
STARTPOS = (-10.9, 115.45)
|
||||
ENDPOS = (-10.7, 115.30)
|
||||
RELATIVE = False
|
||||
|
||||
adjust_sensors()
|
||||
set_adc_averaging()
|
||||
|
||||
def trig_sensors():
|
||||
wait_beam()
|
||||
caput("X03DA-OP-10ADC:TRG.PROC", 1)
|
||||
trig_scienta()
|
||||
|
||||
try:
|
||||
lscan(MOTOR, SENSORS, STARTPOS, ENDPOS, STEPS, LATENCY, RELATIVE, before_read=trig_sensors, after_read = after_readout)
|
||||
finally:
|
||||
if ENDSCAN:
|
||||
after_scan()
|
||||
@@ -1,34 +0,0 @@
|
||||
"""
|
||||
Refocusing mirror Ry scan
|
||||
|
||||
set scan parameters below, move the mirror to the center position.
|
||||
set analyser parameters separately!
|
||||
"""
|
||||
|
||||
import math
|
||||
|
||||
# adjust the following parameters
|
||||
DISTANCE = 0.2
|
||||
STEPS = 0.005
|
||||
LATENCY = 0.5
|
||||
ENDSCAN = False
|
||||
|
||||
MOTORS = (RefocusYRot)
|
||||
SENSORS = (Counts, SampleCurrent, RefCurrent, MachineCurrent, EnergyDistribution, AngleDistribution)
|
||||
STARTPOS = (-DISTANCE / 2.0)
|
||||
ENDPOS = (DISTANCE / 2.0)
|
||||
RELATIVE = True
|
||||
|
||||
adjust_sensors()
|
||||
set_adc_averaging()
|
||||
|
||||
def trig_sensors():
|
||||
wait_beam()
|
||||
caput("X03DA-OP-10ADC:TRG.PROC", 1)
|
||||
trig_scienta()
|
||||
|
||||
try:
|
||||
lscan(MOTORS, SENSORS, STARTPOS, ENDPOS, STEPS, LATENCY, RELATIVE, before_read=trig_sensors, after_read = after_readout)
|
||||
finally:
|
||||
if ENDSCAN:
|
||||
after_scan()
|
||||
@@ -1,28 +0,0 @@
|
||||
"""
|
||||
XAS scan
|
||||
"""
|
||||
|
||||
POSITIONERS = (ManipulatorPhi)
|
||||
SENSORS = (Keithley1, Keithley2, MachineCurrent)
|
||||
|
||||
#SENSORS = (SampleCurrent, RefCurrent, AuxCurrent, AuxVoltage, MachineCurrent)
|
||||
#SENSORS = (SampleCurrent, RefCurrent, AuxCurrent, MachineCurrent, OpticsCameraCentroidX, OpticsCameraSigmaX)
|
||||
STARTPOS = (-179.0)
|
||||
ENDPOS = (180.0)
|
||||
#NUMPOINTS = 76
|
||||
STEPSIZE = 5.0
|
||||
LATENCY = 0.1
|
||||
DWELL = 0.1
|
||||
|
||||
ENDSCAN = False # close shutter at end
|
||||
|
||||
|
||||
def trig():
|
||||
wait_beam()
|
||||
#caput("X03DA-OP-10ADC:TRG.PROC", 1)
|
||||
|
||||
try:
|
||||
lscan(POSITIONERS, SENSORS, STARTPOS, ENDPOS, STEPSIZE, LATENCY, before_read=trig, after_read=after_readout)
|
||||
finally:
|
||||
if ENDSCAN:
|
||||
after_scan()
|
||||
@@ -1,54 +0,0 @@
|
||||
"""
|
||||
XAS on-the-fly scan
|
||||
|
||||
SCRIPT NOT RUNNING!
|
||||
|
||||
TO DO: probably need to wrap the mono in a ch.psi.pshell.device.Motor
|
||||
or ch.psi.pshell.device.MotorGroupBase
|
||||
"""
|
||||
|
||||
# scan parameters
|
||||
|
||||
START_ENERGY = 400.0
|
||||
END_ENERGY = 410.0
|
||||
# total scan time in seconds
|
||||
SCAN_TIME = 60.0
|
||||
# dwell time (per step) in seconds
|
||||
DWELL = 0.1
|
||||
# True = close shutter and turn off detectors at end, False = leave beam and detectors on
|
||||
ENDSCAN = False
|
||||
|
||||
# --- do not edit below ---
|
||||
|
||||
mm = ch.psi.pshell.device.Motor("X03DA-PGM:MI")
|
||||
gm = ch.psi.pshell.device.Motor("X03DA-PGM:GR")
|
||||
|
||||
POSITIONERS = (MonoBetaMotor, MonoThetaMotor)
|
||||
SENSORS = (MonoEnergy, MonoCff, MonoBeta, MonoTheta, SampleCurrent, RefCurrent, MachineCurrent)
|
||||
STARTPOS = (beta1, theta1)
|
||||
ENDPOS = (beta2, theta2)
|
||||
|
||||
caput('X03DA-PGM:energy', END_ENERGY)
|
||||
time.sleep(0.05)
|
||||
beta1 = caget('X03DA-PGM:beta')
|
||||
theta1 = caget('X03DA-PGM:theta')
|
||||
print "end: energy = {en}, beta = {be}, theta = {th}".format(en=END_ENERGY, be=beta1, th=theta1)
|
||||
|
||||
caput('X03DA-PGM:energy', START_ENERGY)
|
||||
time.sleep(0.05)
|
||||
beta2 = caget('X03DA-PGM:beta')
|
||||
theta2 = caget('X03DA-PGM:theta')
|
||||
print "start: energy = {en}, beta = {be}, theta = {th}".format(en=END_ENERGY, be=beta1, th=theta1)
|
||||
Eph.write(START_ENERGY)
|
||||
|
||||
LATENCY = 0.
|
||||
|
||||
adjust_sensors()
|
||||
set_adc_averaging()
|
||||
|
||||
try:
|
||||
prepare_keithleys(DWELL)
|
||||
cscan(POSITIONERS, SENSORS, STARTPOS, ENDPOS, NSTEPS-1, time=scan_time, before_read=before_readout, after_read=after_readout)
|
||||
finally:
|
||||
if ENDSCAN:
|
||||
after_scan()
|
||||
@@ -1,19 +0,0 @@
|
||||
SENSORS = [Counts, MachineCurrent, SampleCurrent, RefCurrent, EnergyDistribution, Scienta.getDataMatrix()]
|
||||
X_RANGE = [0.0, 1.0]
|
||||
Y_RANGE = [0.0, 1.0]
|
||||
STEPS =[10, 10]
|
||||
LATENCY = 0.0
|
||||
ZIGZAG = False
|
||||
ENDSCAN = False
|
||||
|
||||
|
||||
|
||||
adjust_sensors()
|
||||
set_adc_averaging()
|
||||
set_preference(Preference.PLOT_TYPES, {'Scienta spectrum':1})
|
||||
|
||||
try:
|
||||
ascan((ManipulatorX, ManipulatorY), SENSORS, (X_RANGE[0], Y_RANGE[0]), (X_RANGE[1], Y_RANGE[1]), STEPS, LATENCY, relative = False, zigzag = ZIGZAG, before_read=before_readout, after_read = after_readout)
|
||||
finally:
|
||||
if ENDSCAN:
|
||||
after_scan()
|
||||
+8
-5
@@ -115,7 +115,7 @@ def wait_keithleys():
|
||||
wait for one dwell time so that the keithleys can finish their measurement.
|
||||
if we polled them too early, they would produce an error message.
|
||||
"""
|
||||
#time.sleep(KeiSample.dwell * 2.2)
|
||||
time.sleep(KeiSample.dwell * 2.2)
|
||||
|
||||
def fetch_keithleys():
|
||||
"""
|
||||
@@ -295,10 +295,13 @@ def before_readout():
|
||||
fetch_keithleys()
|
||||
|
||||
def after_readout(rec):
|
||||
if get_exec_pars().persist:
|
||||
if rec.index == 0:
|
||||
create_diag_datasets()
|
||||
append_diag_datasets()
|
||||
if beam_ok:
|
||||
if get_exec_pars().persist:
|
||||
if rec.index == 0:
|
||||
create_diag_datasets()
|
||||
append_diag_datasets()
|
||||
else:
|
||||
rec.invalidate()
|
||||
|
||||
def after_scan():
|
||||
"""
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
"""
|
||||
exit slit test scan
|
||||
|
||||
set ADC or Keithly averaging separately.
|
||||
"""
|
||||
|
||||
POSITIONERS = (ExitSlit)
|
||||
@@ -10,19 +12,11 @@ STEPS = 10.0
|
||||
LATENCY = 0.1
|
||||
DWELL = 1.0
|
||||
|
||||
value = DWELL * 10.0
|
||||
SampleCurrentAveraging.write(value)
|
||||
RefCurrentAveraging.write(value)
|
||||
AuxCurrentAveraging.write(value)
|
||||
|
||||
def trig():
|
||||
wait_beam()
|
||||
caput("X03DA-OP-10ADC:TRG.PROC", 1)
|
||||
|
||||
lscan(POSITIONERS, SENSORS, STARTPOS, ENDPOS, STEPS, LATENCY, before_read=trig, after_read=after_readout)
|
||||
lscan(POSITIONERS, SENSORS, STARTPOS, ENDPOS, STEPS, LATENCY, before_read=before_readout, after_read=after_readout)
|
||||
|
||||
STARTPOS = (200.0)
|
||||
ENDPOS = (-10.0)
|
||||
STEPS = -10.0
|
||||
|
||||
lscan(POSITIONERS, SENSORS, STARTPOS, ENDPOS, STEPS, LATENCY, before_read=trig, after_read=after_readout)
|
||||
lscan(POSITIONERS, SENSORS, STARTPOS, ENDPOS, STEPS, LATENCY, before_read=before_readout, after_read=after_readout)
|
||||
|
||||
|
||||
@@ -1,62 +0,0 @@
|
||||
"""
|
||||
exit slit test scan
|
||||
|
||||
manual settings: photon energy 800 eV (G1200), FE = 1 x 1
|
||||
|
||||
keithley 1: diode
|
||||
keithley 2: RMU
|
||||
"""
|
||||
|
||||
POSITIONERS = (ExitSlit)
|
||||
SENSORS = (Keithley1, Keithley2, MachineCurrent)
|
||||
STARTPOS = (-10.0)
|
||||
ENDPOS = (200.0)
|
||||
STEPS = 10.0
|
||||
LATENCY = 1.0
|
||||
DWELL = 1.0
|
||||
|
||||
KEI_DIODE = "X03DA-KEITHLEY-1:"
|
||||
KEI_RMU = "X03DA-KEITHLEY-2:"
|
||||
|
||||
ExitSlit.write(STARTPOS)
|
||||
|
||||
caput(KEI_DIODE + "DOSETDEFAULT", 1)
|
||||
caput(KEI_RMU + "DOSETDEFAULT", 1)
|
||||
time.sleep(1.0)
|
||||
caput(KEI_DIODE + "DOSETADVANCED", 1)
|
||||
caput(KEI_RMU + "DOSETADVANCED", 1)
|
||||
time.sleep(1.0)
|
||||
|
||||
#caput(KEI_DIODE + "READSCAN.SCAN", 0)
|
||||
#caput(KEI_DIODE + "NPLC", 1)
|
||||
caput(KEI_DIODE + "NAVG", 5)
|
||||
#caput(KEI_DIODE + "TCOUNT", 1)
|
||||
caput(KEI_DIODE + "RANGE", 6) # 200 nA
|
||||
|
||||
#caput(KEI_RMU + "READSCAN.SCAN", 0)
|
||||
#caput(KEI_RMU + "NPLC", 1)
|
||||
caput(KEI_RMU + "NAVG", 5)
|
||||
#caput(KEI_RMU + "TCOUNT", 1)
|
||||
caput(KEI_RMU + "RANGE", 8) # 2 nA
|
||||
|
||||
def trig():
|
||||
wait_beam()
|
||||
#WORKS:
|
||||
#caput(KEI_DIODE + "DOREAD", 1)
|
||||
#
|
||||
caput(KEI_DIODE + "DOINIT", 1)
|
||||
caput(KEI_RMU + "DOINIT", 1)
|
||||
time.sleep(0.1)
|
||||
caput(KEI_DIODE + "DOTRIGGER", 1)
|
||||
caput(KEI_RMU + "DOTRIGGER", 1)
|
||||
time.sleep(DWELL * 1.1)
|
||||
caput(KEI_DIODE + "DOFETCH", 1)
|
||||
caput(KEI_RMU + "DOFETCH", 1)
|
||||
|
||||
lscan(POSITIONERS, SENSORS, STARTPOS, ENDPOS, STEPS, LATENCY, before_read=trig, after_read=after_readout)
|
||||
|
||||
STARTPOS = (200.0)
|
||||
ENDPOS = (-10.0)
|
||||
STEPS = -10.0
|
||||
|
||||
lscan(POSITIONERS, SENSORS, STARTPOS, ENDPOS, STEPS, LATENCY, before_read=trig, after_read=after_readout)
|
||||
@@ -1,7 +1,7 @@
|
||||
"""
|
||||
exit slit calibration scan
|
||||
|
||||
manual settings: photon energy 800 eV (G1200), FE = 1 x 1
|
||||
manual settings: photon energy 800 eV (G1200), FE = 1 x 1, ADC/Keithley averaging
|
||||
"""
|
||||
|
||||
POSITIONERS = (ExitSlitY)
|
||||
@@ -12,17 +12,5 @@ STEPS = 0.01
|
||||
LATENCY = 0.1
|
||||
DWELL = 1.0
|
||||
|
||||
value = DWELL * 10.0
|
||||
SampleCurrentAveraging.write(value)
|
||||
RefCurrentAveraging.write(value)
|
||||
AuxCurrentAveraging.write(value)
|
||||
lscan(POSITIONERS, SENSORS, STARTPOS, ENDPOS, STEPS, LATENCY, before_read=before_readout, after_read=after_readout)
|
||||
|
||||
SampleCurrentGain.write("L, 10^7")
|
||||
RefCurrentGain.write("L, 10^9")
|
||||
AuxCurrentGain.write("L, 10^8")
|
||||
|
||||
def trig():
|
||||
wait_beam()
|
||||
caput("X03DA-OP-10ADC:TRG.PROC", 1)
|
||||
|
||||
lscan(POSITIONERS, SENSORS, STARTPOS, ENDPOS, STEPS, LATENCY, before_read=trig, after_read=after_readout)
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
"""
|
||||
exit slit calibration scan
|
||||
|
||||
manual settings: photon energy 800 eV (G1200), FE = 1 x 1
|
||||
|
||||
keithley 1: diode
|
||||
keithley 2: RMU
|
||||
"""
|
||||
|
||||
POSITIONERS = (ExitSlitY)
|
||||
SENSORS = (Keithley1, Keithley2, MachineCurrent)
|
||||
STARTPOS = (-0.5)
|
||||
ENDPOS = (1.0)
|
||||
STEPS = 0.01
|
||||
NSTEPS = round((ENDPOS - STARTPOS) / STEPS) + 1
|
||||
LATENCY = 0.1
|
||||
DWELL = 1.0
|
||||
|
||||
KEI_DIODE = "X03DA-KEITHLEY-1:"
|
||||
KEI_RMU = "X03DA-KEITHLEY-2:"
|
||||
|
||||
caput(KEI_DIODE + "DOSETDEFAULT", 1)
|
||||
caput(KEI_RMU + "DOSETDEFAULT", 1)
|
||||
time.sleep(1.0)
|
||||
caput(KEI_DIODE + "DOSETADVANCED", 1)
|
||||
caput(KEI_RMU + "DOSETADVANCED", 1)
|
||||
time.sleep(1.0)
|
||||
#caput(KEI_DIODE + "DATAFORMAT", 1)
|
||||
|
||||
|
||||
#caput(KEI_DIODE + "DOINIT", 1)
|
||||
#caput(KEI_RMU + "DOINIT", 1)
|
||||
time.sleep(0.1)
|
||||
#caput(KEI_DIODE + "DOTRIGGER", 1)
|
||||
#caput(KEI_RMU + "DOTRIGGER", 1)
|
||||
#time.sleep(DWELL * 2)
|
||||
#caput(KEI_DIODE + "DOFETCH", 1)
|
||||
#caput(KEI_RMU + "DOFETCH", 1)
|
||||
|
||||
#caput(KEI_DIODE + "READSCAN.SCAN", 0)
|
||||
#caput(KEI_DIODE + "NPLC", 1)
|
||||
caput(KEI_DIODE + "NAVG", 5)
|
||||
#caput(KEI_DIODE + "TCOUNT", 1)
|
||||
caput(KEI_DIODE + "RANGE", 6) # 200 nA
|
||||
|
||||
#caput(KEI_RMU + "READSCAN.SCAN", 0)
|
||||
#caput(KEI_RMU + "NPLC", 1)
|
||||
caput(KEI_RMU + "NAVG", 5)
|
||||
#caput(KEI_RMU + "TCOUNT", 1)
|
||||
caput(KEI_RMU + "RANGE", 8) # 2 nA
|
||||
|
||||
time.sleep(1.0)
|
||||
|
||||
def trig():
|
||||
wait_beam()
|
||||
#WORKS:
|
||||
#caput(KEI_DIODE + "DOREAD", 1)
|
||||
#
|
||||
caput(KEI_DIODE + "DOINIT", 1)
|
||||
caput(KEI_RMU + "DOINIT", 1)
|
||||
time.sleep(0.1)
|
||||
caput(KEI_DIODE + "DOTRIGGER", 1)
|
||||
caput(KEI_RMU + "DOTRIGGER", 1)
|
||||
time.sleep(DWELL * 1.1)
|
||||
caput(KEI_DIODE + "DOFETCH", 1)
|
||||
caput(KEI_RMU + "DOFETCH", 1)
|
||||
|
||||
lscan(POSITIONERS, SENSORS, STARTPOS, ENDPOS, STEPS, LATENCY, before_read=trig, after_read=after_readout)
|
||||
@@ -2,7 +2,7 @@
|
||||
Focusing mirror Rx scan
|
||||
to center the beam on the monochromator grating
|
||||
Rx = -20...+20
|
||||
set the front end to 0.5 x 0.5, exit slit to 25, photon energy to 1500
|
||||
set the front end to 0.5 x 0.5, exit slit to 25, photon energy to 1500, ADC/Keithley averaging
|
||||
"""
|
||||
|
||||
import math
|
||||
@@ -19,13 +19,6 @@ MOTORS = [FocusXRot]
|
||||
SENSORS = [SampleCurrent, RefCurrent, MachineCurrent, OpticsCameraCentroidX, OpticsCameraSigmaX]
|
||||
RELATIVE = False
|
||||
|
||||
value = DWELL * 10.0
|
||||
SampleCurrentAveraging.write(value)
|
||||
RefCurrentAveraging.write(value)
|
||||
|
||||
SampleCurrentGain.write("L, 10^9")
|
||||
RefCurrentGain.write("L, 10^9")
|
||||
|
||||
# front end size includes offset!
|
||||
FrontendHSize.write(1.0)
|
||||
FrontendVSize.write(0.9)
|
||||
@@ -34,12 +27,9 @@ ExitSlit.write(25.0)
|
||||
adjust_sensors()
|
||||
set_adc_averaging()
|
||||
|
||||
def trig():
|
||||
wait_beam()
|
||||
caput("X03DA-OP-10ADC:TRG.PROC", 1)
|
||||
|
||||
try:
|
||||
lscan(MOTORS, SENSORS, STARTPOS, ENDPOS, STEPS, LATENCY, RELATIVE, before_read=trig, after_read = after_readout)
|
||||
lscan(MOTORS, SENSORS, STARTPOS, ENDPOS, STEPS, LATENCY, RELATIVE, before_read=before_readout, after_read = after_readout)
|
||||
finally:
|
||||
if ENDSCAN:
|
||||
after_scan()
|
||||
after_scan()
|
||||
|
||||
|
||||
@@ -22,13 +22,9 @@ RELATIVE = True
|
||||
adjust_sensors()
|
||||
set_adc_averaging()
|
||||
|
||||
def trig_sensors():
|
||||
wait_beam()
|
||||
#trig_scienta()
|
||||
caput("X03DA-OP-10ADC:TRG.PROC", 1)
|
||||
|
||||
try:
|
||||
lscan(MOTORS, SENSORS, STARTPOS, ENDPOS, STEPS, LATENCY, RELATIVE, before_read=trig_sensors, after_read = after_readout)
|
||||
lscan(MOTORS, SENSORS, STARTPOS, ENDPOS, STEPS, LATENCY, RELATIVE, before_read=before_readout, after_read = after_readout)
|
||||
finally:
|
||||
if ENDSCAN:
|
||||
after_scan()
|
||||
after_scan()
|
||||
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
"""
|
||||
TEST: OTF scan for mono calibration
|
||||
|
||||
under development - does not run yet
|
||||
|
||||
tasks:
|
||||
- find out positioner of beta angle and set up device (must be of motor class).
|
||||
- load table of scan positions.
|
||||
- add outer theta loop.
|
||||
"""
|
||||
|
||||
MOTORS = (MonoBeta)
|
||||
SENSORS = (SampleCurrent, RefCurrent, MachineCurrent)
|
||||
STARTPOS = (beta1)
|
||||
ENDPOS = (beta2)
|
||||
TIME = 120.0 # seconds
|
||||
STEPS = 1000
|
||||
RELATIVE = False
|
||||
ENDSCAN = False
|
||||
|
||||
adjust_sensors()
|
||||
set_adc_averaging()
|
||||
|
||||
def trig_sensors():
|
||||
caput("X03DA-OP-10ADC:TRG.PROC", 1)
|
||||
|
||||
try:
|
||||
wait_beam()
|
||||
cscan(MOTORS, SENSORS, STARTPOS, ENDPOS, STEPS, time = TIME, relative = RELATIVE, before_read = trig_sensors)
|
||||
finally:
|
||||
if ENDSCAN:
|
||||
after_scan()
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
"""
|
||||
2D Manipulator scan
|
||||
|
||||
set manipulator scan parameters below.
|
||||
set analyser parameters separately!
|
||||
move manipulator to center position before start!
|
||||
|
||||
"""
|
||||
|
||||
import math
|
||||
|
||||
# actual number of positions will be +1!
|
||||
RANGE = (111.0, 117.5)
|
||||
STEP = (0.5)
|
||||
ENDSCAN = False
|
||||
|
||||
MOTORS = (ManipulatorZ)
|
||||
SENSORS = (Counts, SampleCurrent, RefCurrent, MachineCurrent, EnergyDistribution, AngleDistribution)
|
||||
|
||||
adjust_sensors()
|
||||
set_adc_averaging()
|
||||
#set_preference(Preference.PLOT_TYPES, {'Scienta spectrum':1})
|
||||
|
||||
# time per scienta acquisition in seconds
|
||||
time1 = time.time()
|
||||
trig_scienta()
|
||||
time2 = time.time()
|
||||
scienta_time = (time2 - time1) + 1.0
|
||||
print "scienta_time: ", scienta_time
|
||||
|
||||
# time for one scan step in seconds
|
||||
NSTEPS = int((RANGE[1] - RANGE[0]) / STEP) + 1
|
||||
scan_time = scienta_time * NSTEPS
|
||||
print "scan_time: ", scan_time
|
||||
|
||||
#try:
|
||||
cscan(MOTORS, SENSORS, RANGE[0], RANGE[1], NSTEPS - 1, time=scan_time, before_read=before_readout, after_read = after_readout)
|
||||
#except ContinuousScanFollowingErrorException:
|
||||
print time.time(), " cscan: exception"
|
||||
@@ -1,36 +0,0 @@
|
||||
"""
|
||||
sample positioning scan - EXPERIMENTAL
|
||||
|
||||
set manipulator scan parameters below.
|
||||
set analyser parameters separately!
|
||||
move manipulator to center position before start!
|
||||
|
||||
"""
|
||||
|
||||
import math
|
||||
|
||||
# list of (start, stop, step) tuples
|
||||
MOTORS = (ManipulatorY)
|
||||
REGIONS = [(-3.7, -2.7, 0.025), (2.0, 3.0, 0.025)]
|
||||
|
||||
#MOTORS = (ManipulatorZ)
|
||||
#REGIONS = [(111.5, 112.1, 0.025), (116.8, 117.4, 0.025)]
|
||||
|
||||
RELATIVE = False
|
||||
LATENCY = 0.0
|
||||
ENDSCAN = False
|
||||
ZIGZAG = True
|
||||
|
||||
SENSORS = (Counts, SampleCurrent, RefCurrent, MachineCurrent, EnergyDistribution, AngleDistribution)
|
||||
#SENSORS = (Counts, Scienta.spectrum, Scienta.dataMatrix, SampleCurrent, RefCurrent, MachineCurrent, EnergyDistribution, AngleDistribution)
|
||||
|
||||
adjust_sensors()
|
||||
set_adc_averaging()
|
||||
#set_preference(Preference.PLOT_TYPES, {'Scienta spectrum':1})
|
||||
|
||||
try:
|
||||
rscan(MOTORS, SENSORS, REGIONS, latency = LATENCY, relative = RELATIVE, passes = 1, zigzag = ZIGZAG, before_read = before_readout, after_read = after_readout, title = "my scan")
|
||||
finally:
|
||||
if ENDSCAN:
|
||||
after_scan()
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
"""
|
||||
Arguments:
|
||||
|
||||
MOTOR (device)
|
||||
SENSORS (list)
|
||||
RANGE (tuple (min, max))
|
||||
STEPS (int or tuple)
|
||||
LATENCY (double)
|
||||
RELATIVE (BOOLEAN)
|
||||
"""
|
||||
|
||||
MOTOR = (ManipulatorY)
|
||||
SENSORS = (Counts, Scienta.spectrum, SampleCurrent, RefCurrent, MachineCurrent)
|
||||
RANGE = (-0.5, 0.5)
|
||||
STEPS = 10
|
||||
LATENCY = 0.0
|
||||
RELATIVE = True
|
||||
ENDSCAN = True
|
||||
|
||||
adjust_sensors()
|
||||
set_adc_averaging()
|
||||
set_preference(Preference.PLOT_TYPES, {'Scienta spectrum':1})
|
||||
|
||||
try:
|
||||
lscan(MOTOR, SENSORS, RANGE[0], RANGE[1], STEPS, LATENCY, RELATIVE, before_read=before_readout, after_read = after_readout)
|
||||
finally:
|
||||
if ENDSCAN:
|
||||
after_scan()
|
||||
|
||||
Reference in New Issue
Block a user