For psana1 the multi-panel area detector interface was large, with many methods.  Currently the psana2 area detector interface is small, in part because the methods are exposed to AMI2 (the graphical real-time monitoring tool) and we don't want to overwhelm the users with too many GUI options.  Currently the methods are:

det.raw.raw(evt) # returns the raw uncalibrated 3D data
det.raw.calib(evt) # returns calibrated 3D data
det.raw.image(evt, nda=<myarray>) # returns a calibrated image but with values placed on a uniform 2D grid. optional nda kwarg will place an array with the correct 3D shape on the same 2D grid.
det.calibconst # dictionary attribute with all calibration constants for the detector

Optional calibration-control settings (e.g. common-mode-noise-subtraction parameters, user bad-pixel masks) are provided by the user to the Detector() constructor when the object is instantiated using python kwargs.

The calibration constants structure will be different for different detectors, but typically contains items such as per-pixel pedestals, gains, and x-y-z coordinates.  Our current thinking is to keep this area-detector interface small, but we are considering providing helper objects that would be generally useful for users.  A possible example would be the get_psf() that Mikhail implemented at the request of Rick Kirian that returns position vectors in the slow/fast readout directions.  Perhaps the psf values could be additional entries placed into the det.calibconst dictionary by the detector interface code?

  • No labels