Files
x03da/script/optics/PhotonFluxSpectrum.py
2018-02-02 15:29:28 +01:00

100 lines
2.5 KiB
Python

"""
photon flux spectrum
SampleCurrent: diode
RefCurrent: RMU
AuxCurrent: not connected
"""
import time
RANGE = "C K-edge"
BEAM = "G1200 1x1"
if RANGE == "G600 full":
# G600 full spectrum
STARTPOS = (50.0)
ENDPOS = (1100.0)
STEPS = 10.0
LATENCY = 5.0
DWELL = 1.0
elif RANGE == "G1200 full":
# G1200 full spectrum
STARTPOS = (100.0)
ENDPOS = (2000.0)
STEPS = 25.0
LATENCY = 5.0
DWELL = 1.0
elif RANGE == "C K-edge":
# carbon edge
STARTPOS = (250.0)
ENDPOS = (330.0)
STEPS = 0.2
LATENCY = 1.0
DWELL = 1.0
KEI_DIODE = "X03DA-KEITHLEY-1:"
KEI_RMU = "X03DA-KEITHLEY-2:"
if BEAM == "G600 1x1":
# G600 1x1 reference sscan_2268 (elog:119)
SampleCurrentGain.write("L, 10^7")
RefCurrentGain.write("L, 10^9")
caput(KEI_DIODE + "RANGE", 6) # 200 nA
caput(KEI_RMU + "RANGE", 8) # 2 nA
FrontendHSize.write(1.5)
FrontendVSize.write(1.4)
ExitSlit.write(100.0)
elif BEAM == "G600 6x10":
# G600 6x10 reference sscan_2268 (elog:119)
SampleCurrentGain.write("L, 10^5")
RefCurrentGain.write("L, 10^7")
caput(KEI_DIODE + "RANGE", 4) # 20 uA
caput(KEI_RMU + "RANGE", 6) # 200 nA
FrontendHSize.write(6.5)
FrontendVSize.write(10.4)
ExitSlit.write(100.0)
elif BEAM == "G1200 1x1":
# G1200 1x1 reference sscan_2264 (elog:114)
SampleCurrentGain.write("L, 10^7")
RefCurrentGain.write("L, 10^9")
caput(KEI_DIODE + "RANGE", 6) # 200 nA
caput(KEI_RMU + "RANGE", 8) # 2 nA
FrontendHSize.write(1.5)
FrontendVSize.write(1.4)
ExitSlit.write(100.0)
elif BEAM == "G1200 6x10":
# G1200 6x10 reference sscan_2266 (elog:116)
SampleCurrentGain.write("L, 10^6")
RefCurrentGain.write("L, 10^8")
caput(KEI_DIODE + "RANGE", 5) # 2 uA
caput(KEI_RMU + "RANGE", 7) # 20 nA
FrontendHSize.write(6.5)
FrontendVSize.write(10.4)
ExitSlit.write(100.0)
else:
# use current settings
pass
def trig():
time.sleep(LATENCY)
wait_beam()
caput(KEI_DIODE + "DOINIT", 1)
caput(KEI_RMU + "DOINIT", 1)
caput(KEI_DIODE + "DOTRIGGER", 1)
caput(KEI_RMU + "DOTRIGGER", 1)
caput("X03DA-OP-10ADC:TRG.PROC", 1)
time.sleep(DWELL)
caput(KEI_DIODE + "DOFETCH", 1)
caput(KEI_RMU + "DOFETCH", 1)
value = DWELL * 10.0
SampleCurrentAveraging.write(value)
RefCurrentAveraging.write(value)
POSITIONERS = (Eph)
SENSORS = (Keithley1, Keithley2, SampleCurrent, RefCurrent, MachineCurrent)
lscan(POSITIONERS, SENSORS, STARTPOS, ENDPOS, STEPS, 0.0, before_read=trig, after_read=after_readout)