Page History
...
Area Detector Brainstorming
Jan. 29, 2019
Aug. 4, 2020 (cpo, Mikhail, Valerio)
- det = run.Detector(det_name)
- array = det.raw.calib(evt)
- array = det.raw.raw(evt)
- we will return a natural shape for the above (2D for opal, 3D for cspad/epix) and have a global-flag if we want everything to be 3D (e.g. for psocake)
- maybe image(evt, array=array) should be an algorithm? det.raw.image(evt,array=None)? or could split det.raw.image(evt), det.raw.image(array=array)?
- get_calib_const(det_name, timestamp or run or evt). Mikhail suggests we should consider det.get_calib_const(timestamp or run or evt)
- flexible number of segments (no hardwired "32" segments for a cspad). e.g. a "full detector" may have segments 2,3,4,7,8,9. one run may have segments 3,4,7 another run may have segments 2,3,8,9
- calibration data must be taken and stored with all segments in the "full detector" (i.e. 2,3,4,7,8,9)
- try to use same common-mode algorithm for all detectors (stripes/banks). multiple passes needed for different directions. (e.g. Jungfrau and epix are currently same)
- should we continue to use 3D arrays, or instead a list of 2D arrays because we might want to do ROIs?
- propose we stick with 3D arrays as well
- complicates the code for a "special case" of ROIs
- ROIs also need the information about the "corner" of the ROI
- maybe the ROIs are really "feature extracted" data i.e. instead det.raw.image() it's det.fex.image()
- could have a separate det.raw.calib_rois(evt) to return the list?
- how do we reuse the python code in the DRP which is multi-threaded C++? cpo suggests maybe we have a python multi-process DRP. another labor-intensive option is supporting multi-threaded C++. or write C++ and wrap with python (was complicated for the hsd, but perhaps just because we needed to avoid 1MHz malloc)
- DRP will have to work on "segments" of a full detector (probably in units of panels)
Overview
Content Tools