The purpose of environment store (EnvStore) is to keep records of all transitions so that they can be retrieved later using the timestamp of an event. There are three types of EnvStore:
- epics
- scans
- step
EnvStore epics and scan are created by default when "epics" or "scan" keyword is found in the configs. The variables and values are stored as a dictionary in this format:
{alg: {segment_id: {var_name: var_type, }, }, }
To retrieve a value,
edet = run.Detector('epix_variable_name')
val = edet(evt)
This is done by first location alg and segment which store this variable then matching dgram(s) in the EnvStore is retrieved by searching with timestamp. We then get the value from dgram.epics.alg[segment_id].var_name.
EnvStore step is created when "config" is found as an attribute of a detector in config(s) e.g. configs[0].tmoopal[0].config.user.black_level. The store will have the detector name as its env_name. We can retrieve the value and step event by
sdet = run.Detector('tmoopal')
step_value = sdet.step.step_value(evt) # this will fail if this detector doesn't have "config" as its attribute in configs – see above
step_docstring = sdet.step.step_docstring(evt)
step_evt = sdet.step.evt(evt)