Pixel Offline Status/Mask Tables

This page introduces the proposed offline status/mask tables for PXL subsystem. There are three tables introduced here. The original codes are located here:  /star/u/dongx/lbl/hft/database/idl.

1) pxlStatus.idl
2) pxlSensorRowColumnMask.idl
3) pxlSensorPixelMask.idl

Table 1): General PXL sensor status - pxlStatus.idl - non-indexed table

The table is expected to have the status (coded) information down to each sensor. At minimum, we have 0 meaning the sensor is out, and 1 meaning the sensor is in and working good. Other values are now saved to encode different sensor status during the run. The full structure is in the following:

/*    pxlStatus.idl

*
*  Table: pxlStatus
*
*       description: PXL pixel status for 400 sensors
*/
struct pxlStatus {
  octet   status[400]; // pxl sensor status 0: not in place 1: in place and good
                       // 2-255: save to encode different sensor status
};
 
Table 2) and 3) are used together to denote the bad pixels on each sensor to be masked out. They are indexed tables with maximum number of rows to be 400 (number of sensors). It is going to have very large size if we use the full BitMap-like mask (400M channel * 1bit = 50MB). Then I propose to only store the bad individual pixels or rows/columns. They have similar structure, but one is used to mask out the individual pixels and one is to mask out the whole rows/columns. Currently the maximumn number of bad individual pixels or rows/columns are all set to 100. Let me know if this need to be increased. The maximum total size of two tables will be ~ 2 byte *100 * 2 * 400 * 2 ~ 320 KB which is very acceptable.

/*    pxlSensorPixelMask.idl
*
*  Table: pxlSensorPixelMask
*
*       description: PXL sensor individual pixel mask - 400 entries per timestamp
*/
struct pxlSensorPixelMask {
  long nEntries;        // total number of pixels to be masked out, maximum 100
  short rowNum[100];    // row Num
  short columnNum[100]; // column Num of those pixels are masked out, one-to-one correpondence
};
/*    pxlSensorRowColumnMask.idl
*
*  Table: pxlSensorRowColumnMask
*
*       description: PXL sensor row column mask - 400 entries per timestamp
*/
struct pxlSensorRowColumnMask {
  long nEntries;        // nRows * 100 + nColumns, nRows/nColumns maximum 100
  short rowNum[100];    // row numbers of those are masked out
  short columnNum[100]; // column numbers of those are masked out
};