Page History
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 two types of EnvStore:
- epics
- scanscan
- step
Storing Variable Names
For 'epics' and 'scan', to To be able to access the value quickly, the structure (d.detname[seg_id].alg.var_name) that we learn from configs is stored in a dictionary as:
env_variables = {alg: {segment_id: {var_name: var_type, }, }, }
We don't need to this for step.
Storing Transition Events
For 'epics
...
' envstore, we store all events with TransiontId = SlowUpdate.
For 'scan' and 'step', we store all events with TransitionId = BeginStep (they are reference to each other).
Retrieve the Values
For 'epics' and 'scan', we can retrieve a value of any of their variables by creating a detector with the variable name:
configs[0].software.scan[0].raw.step_docstring
Envstore epics and scans are created when "epics" or "scan" keyword is found in the configs. To retrieve a value,
edet = run.Detector('epix_variable_name')
scandet = run.Detector('motor1')
stepvdet step_value_det = run.Detector('step_value')
You can then retrieve the value by calling det
val = xxxdet(evt).
This This is done by first locating alg and segment_id that 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 by default and store all steps seen in a run.