tangkong / SSRL-2-2

SSRL-2-2 beamline profile, continuous XAS
0 stars 0 forks source link

Support for 100E detector #6

Open tangkong opened 3 years ago

tangkong commented 3 years ago

XAS performed by 100E detector is desired, particularly with fly scanning support. FPGA boxes work much in the same way as on 2-2, but data is being collected from both the FPGA box (encoder, adc, counters) and 100E IOC's (DXP data, mca traces, ICR/OCR)

High level punch list:

tangkong commented 3 years ago

The FPGA emits data in chunks of size n_frames, while the DXP's emit data in chunks of size n_pixels * n_elements. One might expect the total number of fpga frames (number of requested triggers) to equal the total number of pixels collected, but this is not guaranteed to be the case. (reasons are unclear, but related to the fact that the dxp can end up buffering partial frames).

This this causes problems with the document structure, since we cannot align the two datasets. We certainly cannot expect to have the two to be aligned at any given collect() call.

One solution to this is to store DXP data and FPGA data as separate streams, with each callback on a separate thread. Doing this within one flyer object might be difficult, but we could make two flyer objects?

tangkong commented 3 years ago

Emitting in two separate streams will be sufficient here.

tangkong commented 3 years ago

Various commits I forgot to reference: f08be809d43f3bf30b1027c064a542fc6b222cef da33fcb482c4380a426ffb8c528a5e4cb2920946 265be44c208a305d1c4cd297a739cf2c787c9a48 4786e1e73fe6a1e14eb3aecd89d248e116e5a768