Skip to content

Commit f669ff2

Browse files
committed
acquisition rfc: update with results of discussion of May 7
1 parent eee9980 commit f669ff2

File tree

1 file changed

+44
-21
lines changed

1 file changed

+44
-21
lines changed

rfcs/RFC-006-acquisition.rst

Lines changed: 44 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ This RFC (carried over from `issue 76
1313
proposes the addition of two new interface classes, specific to modules that
1414
support longer-running data acquisition.
1515

16+
1617
Goal
1718
====
1819

@@ -22,11 +23,18 @@ interfaces. This hardware can range in complexity from devices that simply
2223
provide values after some acquisition time, to multi-channel detector setups
2324
common in large scale facilities.
2425

26+
This is conceptually different from a simple ``Readable``, where reading a
27+
value is assumed to be always available, without noticeably waiting time.
28+
In contrast, an acqusition cycle represented by these modules can take a
29+
while to complete, maybe providing intermediate values, and deliver a final
30+
value once finished, until the next acquisition cycle is started.
31+
2532

2633
Technical explanation
2734
=====================
2835

29-
It is proposed to add three new interface classes.
36+
It is proposed to add three new interface classes: ``AcquisitionController``,
37+
``AcquisitionChannel`` and ``Acqusition``.
3038

3139

3240
Definitions
@@ -49,6 +57,8 @@ Definitions
4957
``AcquisitionController`` (no base interface)
5058
---------------------------------------------
5159

60+
Descriptive data ``interface_classes``: ``["AcquisitionController"]``.
61+
5262
Accessibles:
5363

5464
``status``
@@ -77,29 +87,31 @@ command ``stop``
7787
Subsequent ``go`` starts a new acquisition with clearing currently
7888
acquired data.
7989

80-
8190
Property:
8291

8392
``acquisition_channels``
8493
A JSON object specifying the channel modules belonging to this AcquisitionController.
8594
The names of the channel modules are represented as the values of the JSON object.
86-
The role of the channels are represented by the keys.
95+
The role of the channels are represented by the keys and can be used as such by
96+
an ECS.
97+
8798
The key "t" is predefined as a time channel, which basically ends acquisition when
8899
the time indicated by the ``goal`` parameter of the channel module is reached.
89100

90-
Example module property of a controller module "controller":
101+
Example module property of a controller module "controller"::
91102

92-
``{"t": "timechannel", "monitor": "monitor_channel"}``
103+
{"t": "timechannel", "monitor": "monitor_channel"}
93104

94105
The 3 modules "controller", "timechannel" and "monitor_channel" all belong together.
95106

96-
This property is mandatory on any ``AcquisitionController`` (and ``Acquisition`` below).
97-
107+
This property is mandatory on any ``AcquisitionController``.
98108

99109

100110
``AcquisitionChannel`` (derived from ``Readable``)
101111
--------------------------------------------------
102112

113+
Descriptive data ``interface_classes``: ``["AcquisitionChannel", "Readable"]``.
114+
103115
Accessibles:
104116

105117
``value``
@@ -118,9 +130,15 @@ Accessibles:
118130
``goal``
119131
Optional: a ``value`` that, when reached, stops the data acquisition.
120132

121-
Interpretation is channel specific: It can represent time for timer
122-
channels, or a certain number of events, or even a desired statistical
123-
significance.
133+
Depending on the nature of the acqusition cycle being performed, it
134+
may or may not be useful to configure the acqusition with a ``goal``.
135+
It can for example represent time for timer channels, or a certain
136+
number of events for event counter channels, or a desired statistical
137+
significance for a channel that represents the measurement uncertainty.
138+
139+
For acquisitions that are configured with several parameters whose value
140+
is unrelated to the main ``value`` parameter, it is better to use custom
141+
parameters instead.
124142

125143
``use_goal``
126144
Optional: a Boolean, if false, the goal is ignored and the acquisition
@@ -129,15 +147,8 @@ Accessibles:
129147
If ``goal`` is present but not ``use_goal``, it is never ignored.
130148

131149

132-
``Acquisition``
133-
---------------
134-
135-
Combines both AcquisitionController and AcquisitionChannel accessibles into one
136-
interface, for simple devices where only one channel is needed.
137-
138-
139150
"Matrix" type channels
140-
----------------------
151+
~~~~~~~~~~~~~~~~~~~~~~
141152

142153
Not an additional interface class, but an optional extension of
143154
``AcquisitionChannel``.
@@ -166,6 +177,17 @@ data is considered for this reduction.
166177
useful (i.e. not just "pixel 1..N"). (Precise semantics to be specified.)
167178

168179

180+
``Acquisition`` (derived from ``Readable``)
181+
-------------------------------------------
182+
183+
Combines both AcquisitionController and AcquisitionChannel accessibles into one
184+
interface, for simple devices where only one channel is needed.
185+
186+
Does not have the ``acquisition_channels`` property.
187+
188+
Descriptive data ``interface_classes``: ``["Acquisition", "Readable"]``.
189+
190+
169191
Disadvantages, Alternatives
170192
===========================
171193

@@ -183,11 +205,12 @@ Alternatives
183205
added.
184206

185207

186-
Open Questions
187-
==============
208+
Formerly Open Questions
209+
=======================
188210

189211
- Should we add an optional parameter ``progress`` on the
190212
``AcqusitionController``, which gives an (approximate) percentage (or
191213
elapsed/remaining timings) for the acquisition process?
192214

193-
- How to map channel names to "preset names" in ECS like NICOS?
215+
(This has been deferred to when a use-case is brought up and may be added
216+
as a generic SECoP feature.)

0 commit comments

Comments
 (0)