Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

A complication:  the different detector segments can be split over several datagrams (offline event-build) or be all in one datagram (online event-build)

Some Examples and Special Cases

From a conversation with Mona Uervirojnangkoorn on Aug. 27, 2020.

for epics scans:
dgram[0].scans[0].raw.motor2
det = Detector('motor2')
val = det(evt) (timestamp in the event is used to do lookup in stepstore)
could do:
val = det(step) (and get timestamp from the step to do stepstore lookup)


for epics values:
SIOC::SYS0::VARNAME maps to SIOC__SYS0__VARNAME (maybe)
dgram[0].epics[0].raw.SIOC::SYS0::VARNAME
Detector('SIOC::SYS0::VARNAME')
dgram[0].epics[0].raw.SIOC__SYS0__VARNAME
det = Detector('motor1')
val = det(evt)
for "jump" each detector owns a stepstore and the detector uses it to to return correct value.

 

for normal detectors:
dgram[0].tmoopal[0].raw
Detector('tmoopal')

 

proposal for configuration scans ... try to put it in the main detector interface:

det = Detector('tmoopal')
dgram[0].tmoopal[0].cfgscan.user.blacklevel (maybe cfgscan is similar to raw/fex: optionally present)
val = det.cfgscan.user.blacklevel(evt or step)
jumping works
"cfgscan" would be a detector base-class attribute only if being scanned
(no attribute if not being scanned!)