Based on e-mail exchange between Mikhail, Gabriel, Jack, Faisal, Philip.
Content
Pictures from Gabriel's presentation
Configuration objects for epix10ka
Python psana has currently defined a few configuration objects for epix10ka:
Gain coding
Data gain bits assignment
2018-02-23 Gabriel:
Each pixel value is represented over 16 bits; the lowest 14 bits (0 to 13) encode the 14-bit ADC value, and bit 14 encodes the gain mode as either High (bit14==1) or Medium/Low (bit14==0). The choice between Medium and Low is determined globally for the ASIC by the asic.trbit.
Gain modes (Fixed High/Medium, Fixed Low, Auto High/Medium to Low, Forced High/Medium to Low, Masked) are determined per pixel; this information is required for reconstruction and is presumably saved in the metadata (the various modes have somewhat different pedestals, for example).
In practice the whole pixel matrix is most likely to be programmed with the same pattern, i.e., gain mode. While we had a philosophical discussion on using bit 15 for providing more info, due to the asynchronous way the pixel configuration mask is programmed, there is a lot of potential for confusion, so now bit 15 is not used.
2018-02-26 Faisal:
Pixel Mask
ga g M T
x x 1 x pixel is masked
x x 0 1 pixel is under test
0 0 x x auto switch
0 1 x x force switch
1 0 x x low gain (fixed)
1 1 x x high gain (fixed)
Calibration rows
Each ASIC has (176+2 rows x 192 columns), the last two rows are the calibration rows. These rows are not connected to the sensor and are constructed without a pixel/sensor interface. They will be powered just like any other pixel in the ASIC, therefore, they see similar voltages, noise, etc just like other pixels.
wirebonds
#|||||||||#
#¯¯¯¯|¯¯¯¯#
# A2 | A1 #
#----|----#
# A3 | A0 #
#____|____#
#|||||||||#
wirebonds
Calibration files for dark
H/M (dark)
H/M->L (forced)
In the case where we run the array in H/M/L without auto-ranging, we can
just populate the relevant pedestals.
Raw data
dataset exp=mfxx32516:run=377 calibDir: /reg/d/psdm/MFX/mfxx32516/calib det.source : Source("MfxEndstation.0:Epix10ka.0") shape of ndarray: (352, 384)
Gain correction files
On 2018-06-20 Gabriel generated gain and offset files in
Archived in
/reg/g/psdm/detector/gains/epix10k/2018-06-04-Camera1/
Control bits table
config | Data | asicPixelConfigArray | |||||
---|---|---|---|---|---|---|---|
Index | Gain mode | trbit | bit14 | bit3: ga | bit2: g | bit1: Mask | bit0: Test |
0 | FL_L | x | 0 | 1 | 0 | ||
1 | FM_M | 0 | 1 | 1 | 1 | ||
2 | FH_H | 1 | 1 | 1 | 1 | ||
3 | AML_L | 0 | 0 | 0 | 0 | ||
4 | AML_M | 0 | 1 | 0 | 0 | ||
5 | AHL_L | 1 | 0 | 0 | 0 | ||
6 | AHL_H | 1 | 1 | 0 | 0 | ||
pixel control bit array | 1<<5 =32 | 1<<4 =16 | 1<<3 =8 | 1<<2 =4 | Not used | Not used |
Gain correction formula
corrected = (raw - pedestals)/gain
Meeting with Gabriel
On 2018-07-06 15:13 meeting with Gabriel.
Summary:
- control bit table is correct
- formula should include pedestals in stead of offset
- pedestals need to be generated and saved as txt file of shape (7, 1, 352, 384) under calib directory, for example:
/reg/d/psdm/MFX/mfxx32516/calib/Epix10ka::CalibV1/MfxEndstation.0:Epix10ka.0/pedestals/0-end.data - Gabriel on pedestal calibration:
- offsets and gain are calibrated not very often (say, once per month...)
- pedestals should be calibrated pretty often (once per hour...)
- pedestal calibration is implemented in AMI, using offsets,
- script works on dark runs accumulated for 5 gain modes
- + 2 gain modes are evaluated using combination of other 2 and offsets
- pedestal calibration procedure needs to be completed.
Algorithm
- per event make <uint8 control bit array>
- convert to <array of indexes> using <control bits table>
- generate <array of gains> and <array of offsets>
- apply correction using formula
Constants production
Detector/examples/ex_epix10ka_merge_constants.py - generates files ./epix10k-gain(offset).txt(npy) for single segment shape (7, 1, 352, 384)
Deployed with calibman as
/reg/d/psdm/MFX/mfxx32516/calib/Epix10ka::CalibV1/MfxEndstation.0:Epix10ka.0/pixel_gain/0-end.data
/reg/d/psdm/MFX/mfxx32516/calib/Epix10ka::CalibV1/MfxEndstation.0:Epix10ka.0/pixel_offset/0-end.data
References
- https://github.com/slaclab/cac/tree/master/psana/epix10ka - scripts from Faisal
- https://pswww.slac.stanford.edu/apps/portal/index.php?exper_id=1107 - under Workflow -> Batch Processing - batch processing
- /reg/d/psdm/MFX/mfxx32516/results/abunimeh/2 - experimental and jupyter notebook scripts