Source code for EpicsDetector
[docs]class EpicsDetector(object):
"""
This class is used to access data that is typically acquired
at a rate slower than the LCLS shot rate (e.g. temperatures,
voltages) using the EPICS slow-control system.
"""
[docs] def __init__(self, pv_string, env):
"""
Parameters
----------
pv_string : str
The full-name or alias of an EPICS variable
env : psana.Env
The psana environment, for example from psana.DataSource.env()
"""
self._pv_string = pv_string
self._epics = env.epicsStore()
return
[docs] def __call__(self, evt=None):
"""
Parameters
----------
evt: a psana event object
Returns
-------
The value of the EPICS variable for the current event. Note
that the argument evt is actually not required, and that
the value you get returned will be for the *most recently
accessed* event.
"""
pv = self._epics.getPV(self._pv_string)
if pv.numElements() > 1:
return pv.data() # *always* returns an np.array
elif pv.numElements() == 1:
return pv.value(0) # returns int/float
if __name__ == '__main__':
import psana
ds = psana.DataSource('exp=xpptut15:run=59')
det = psana.Detector('XPP:LAS:MMN:01.RBV')
print det(ds.events().next())