Newer
Older
################################################################################
# PyDevice Support for Transfocator
################################################################################
# Setting some variables that are needed in multiple locations
epicsEnvSet('_STACK_THICK',0.050)
epicsEnvSet('_D_MIN',0.00003)
epicsEnvSet('_STACKS',10)
epicsEnvSet('_ENERGY',12)
# Setting some variables beamline-dependent PVs
epicsEnvSet('_SLITH',"") # Horizontal size of slit before CRL
epicsEnvSet('_SLITV',"") # Vertical size of slit before CRL
epicsEnvSet("BLE","") # Beam energy 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'")
# Set up beam properties -- these may only need to be set up at creation of IOC
# however energy can be changed after boot-time
# energy - energy in keV
# L_und - Undulator length in m
# sigmaH_e - Sigma electron source size in H direction in m
# sigmaV_e - Sigma electron source size in V direction in m
# sigmaHp_e - Sigma electron divergence in H direction in rad
# sigmaVp_e - Sigma electron divergence in V direction in rad
pydev("b_properties = {'energy': $(_ENERGY), 'L_und':4.7, 'sigmaH_e':14.8e-6, 'sigmaV_e':3.7e-6, 'sigmaHp_e':2.8e-6, 'sigmaVp_e':1.5e-6})
# Set up beamline properties -- these may only need to be set up at creation of IOC
# d_StoL - Source-to-CRL1 distance, in m
# d_Stof - Source-to-focus distance, in m
pydev("bl_properties = {'d_StoL': 51.9,'d_Stof':,'66.2':}
# Set up crl properties -- these are properties common to the stacks
# stack_d - Stack thickness in mMinimum thickness at the apex in m
# d_min - Minimum thickness at the apex in m
pydev("crl_properties = {'stack_d': $(_STACK_THICK),'d_min': $(_D_MIN)}
# Create Transfocator object
pydev("CRL1 = singleTF(beam = b_properties, bl = bl_properties, crl = crl_properties)")
dbLoadRecords(""${TOP}/db/pyDevCRLsingle.db","P=$(PREFIX), N=1, OBJ=CRL1, KEV=$(BLE), STACK_THICK=$(_STACK_THICK), MIN_THICK=$(_D_MIN), SLITH = $(_SLITH), SLITV = $(_SLITV)")
# After iocInit, need to setup attenuation lookup table
# stack_subFile - string holding name/rel. location of substitutions file loaded
# $(_STACKS) - number of stacks of lenses
# energy - beam energy in keV used for the initial lookup table setup -- can be updated
doAfterIocInit("pydev('CRL1.setupLookupTable(stack_subFile, $(_STACKS), energy = $(_ENERGY))')")