Skip to content
Snippets Groups Projects
pydeviceCRL_single.cmd 3.53 KiB
Newer Older
mwyman's avatar
mwyman committed
################################################################################
# PyDevice Support for Transfocator
################################################################################
epicsEnvSet("PY_OBJECT", "CRL1")
epicsEnvSet("CRL_ID", "CRL1")
mwyman's avatar
mwyman committed

mwyman's avatar
mwyman committed
# Set CRL numbers
epicsEnvSet("_STACKS","10")  # Number of stacks
epicsEnvSet("_ELEM","1024")  # Possible configurations: 2^(Number of stacks) 
mwyman's avatar
mwyman committed
epicsEnvSet("MONOE","testMonoE") # for testing -- replace with real mono energy PV 
epicsEnvSet("IDENERGY","testIDE") # for testing -- replace with real ID energy PV 
# Next two lines set up some testing tools for energy and slits
dbLoadRecords("${TOP}/db/energyTestTools.db","P=$(PREFIX), MONOE=$(MONOE), IDENERGY=$(IDENERGY)")
dbLoadRecords("${TOP}/db/slitTestTools.db","P=$(PREFIX), SLITH=testSSH, SLITV=testSSV")

# Setting some variables beamline-dependent PVs
mwyman's avatar
mwyman committed
epicsEnvSet('_SLITH',"$(PREFIX)testSSH")	# Horizontal size of slit PV before CRL (testing)
#epicsEnvSet('_SLITH',"$(PREFIX)testSSH")	# Horizontal size of slit PV before CRL
epicsEnvSet('_SLITV',"$(PREFIX)testSSV")	# Vertical size of slit PV before CRL (testing)
#epicsEnvSet('_SLITV',"$(PREFIX)testSSV")	# Vertical size of slit PV before CRL
epicsEnvSet("BLE","$(PREFIX)$(MONOE)")	# Beam energy PV at CRL (testing)

mwyman's avatar
mwyman committed

mwyman's avatar
mwyman committed
# CRL DBs and defining substitution file to get stack properties
dbLoadTemplate("substitutions/pyDeviceTfor.substitutions","P=$(PREFIX),CRLID=$(CRL_ID)")
mwyman's avatar
mwyman committed
pydev("stack_subFile = 'substitutions/pyDeviceTfor.substitutions'")
mwyman's avatar
mwyman committed
# Import Transfocator class
mwyman's avatar
mwyman committed
pydev("from pyTransfocator_single import singleTF")

mwyman's avatar
mwyman committed
# Create Transfocator object
pydev("$(PY_OBJECT) = singleTF(crl_setup = 'crl_setup_single.toml')")
mwyman's avatar
mwyman committed

mwyman's avatar
mwyman committed
# DB for Transfocator system
mwyman's avatar
mwyman committed
dbLoadRecords("${TOP}/db/pyDevCRLsingle.db","P=$(PREFIX), CRLID=$(CRL_ID), OBJ=$(PY_OBJECT), KEV=$(BLE), SLITH = $(_SLITH), SLITV = $(_SLITV), ELEM=$(_ELEM)")
mwyman's avatar
mwyman committed

################################################################################
mwyman's avatar
mwyman committed
# Verboseness turned on for debugging -- set to 0 to turn off
doAfterIocInit("dbpf('$(PREFIX)$(CRL_ID):verbosity','1')")
mwyman's avatar
mwyman committed
# After iocInit, need to setup focal size lookup table -- because setting slit
# sizes and energy causes the table to be recalculated, will first disable 
# lookup table calc PV, set the slit sizes and energy, calculate the table 
# directly via python call, then enable calc PV so future slit/energy changes
# update the lookup table

# Disable calc of lookup table
doAfterIocInit("dbpf('$(PREFIX)CRL$(_N):recalc_enable','0')") # Disable table calc
mwyman's avatar
mwyman committed

mwyman's avatar
mwyman committed
# Process current slit and energy PV settings
doAfterIocInit("dbpf('$(PREFIX)$(CRL_ID):slitSize_H.PROC','1')") # PROC H slit size read and update CRL1 object
doAfterIocInit("dbpf('$(PREFIX)$(CRL_ID):slitSize_V.PROC','1')") # PROC V slit size read and update CRL1 object
doAfterIocInit("dbpf('$(PREFIX)$(CRL_ID):energy.PROC','1')") # PROC energy read and update CRL1 object
doAfterIocInit("pydev('print($(PY_OBJECT).energy)')")
doAfterIocInit("pydev('print($(PY_OBJECT).slits)')")
mwyman's avatar
mwyman committed
# Calc lookup table via python; later re-calculations started via EPICS (changes to energy, slits)
mwyman's avatar
mwyman committed
# 	stack_subFile - string holding name/rel. location of substitutions file loaded
mwyman's avatar
mwyman committed
#                     loaded in  dbLoadTemplate
mwyman's avatar
mwyman committed
#   $(_STACKS)  - number of stacks of lenses
doAfterIocInit("pydev('$(PY_OBJECT).setupLookupTable(stack_subFile, $(_STACKS))')") 
mwyman's avatar
mwyman committed

# Enable lookup table calc PV
doAfterIocInit("dbpf('$(PREFIX)$(CRL_ID):recalc_enable','1')") # Enable table calc
mwyman's avatar
mwyman committed
################################################################################