################################################################################
# PyDevice Support for Transfocator
################################################################################

# Setting some variables beamline-dependent PVs
epicsEnvSet('_SLITH',"")	# Horizontal size of slit PV before CRL
epicsEnvSet('_SLITV',"")	# Vertical size of slit PV before CRL
epicsEnvSet("BLE","")	# Beam energy PV at CRL

# Next two lines set up some testing tools for energy -- can be commented out 
epicsEnvSet("MONOE","testMonoE")
dbLoadRecords("${TOP}/db/energyTestTools.db","P=$(PREFIX), MONOE=$(MONOE), IDENERGY=testIDE")

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

# Create Transfocator object
pydev("CRL1 = singleTF(crl_setup = 'crl_setup.toml')")

# DB for Transfocator system
dbLoadRecords(""${TOP}/db/pyDevCRLsingle.db","P=$(PREFIX), N=1, OBJ=CRL1, KEV=$(BLE), SLITH = $(_SLITH), SLITV = $(_SLITV)")

# After iocInit, need to setup focal size lookup table
# 	stack_subFile - string holding name/rel. location of substitutions file loaded
#                     loaded in  dbLoadTemplate
#   $(_STACKS)  - number of stacks of lenses
# 	energy		- beam energy in keV used for the initial lookup table setup -- can be updated
#          after startup
doAfterIocInit() # PROC energy read and update CRL1 object
doAfterIocInit() # PROC slit size read and update CRL1 object
# TODO get STACKS from TOML file?
doAfterIocInit("pydev('CRL1.setupLookupTable(stack_subFile, $(_STACKS)')") #TODO get energy from beamline...