Purpose
- short-term goal - support of detectors moving across LCLS experiments.
- perspective goal - calibration store for LCLS-II
It is assumed that in modern detectors its hardware configuration will be associated with configuration index accessed from DAQ.
This index can be used used in order to extract hardly retrievable calibration parameters (such as geometry, gain factors etc.) in case of transition of the detector from one experiment to another.
Data and metadata
Below are the lists of fields which can be used to define detector and access calibrations
Detector metadata
Field name | Description | More details, example |
---|---|---|
dettype | detector type | CSPAD, CSPAD2X2, EPIX100A, etc. |
detname | detector unique name | (if any) ex.: Camera1 |
detalias | alias name | if it is hard to memorize the entire name, ex.: 'cspad1' |
detidx | detector index | integer number which codes the hardware version |
detidxalias | symbolic alias of the index | can be used if it is hard to memorize the index integer number |
detcompidx:001 | list of component indexes | just in case if we are going to retrieve calibration parameters for separate components |
detidxprev | detector index for previous version | detector index for previous version (if available) for the purpose of old calibration search |
detidxnext | detector index for next version | detector index for next version (if available) for the purpose of new calibration search |
dettsec | time-stamp | time stamp associated with beginning of the validity range for new configuration |
detcom:001 | comments for this hardware version | as it says {key:comment} |
dettag:001 | other tags | just in case if something is forgotten in this table |
Calibration parameters' metadata
Field name | Description | More details, example |
---|---|---|
calibtype | calibration type | ex.: geometry, pixel_status, pixel_gain, pedestals, common_mode, etc. |
tsec | time stamp | beginning of the validity range |
exp | original experiment | (if available) where calibration constants were obtained |
runnum | original run number | (if available) where calibration constants were obtained |
runbegin | begin run number | (if available) for validity range |
runend | end run number | (if available) for validity range |
source | original DAQ data source | data source from DAQ, ex.: 'CxiDs2.0:Cspad.0' |
srcalias | data source alias | ex.: 'cspad' |
calibvers | version tag | in order to access using symbolic name or some alias |
calibversalias | version alias | if it is hard to memorize version tag |
com:001 | comments for this version | as it says {key:comment}
|
tag:001 | other tags | just in case if something is forgotten in this table |
In case of numpy array their metadata are stored with an object.
Text file needs in n-d array metadata
n-d array metadata
Field name | Description | More details, example |
---|---|---|
dtype | data type | int, float, double, etc |
ndims | number of dimensions (N) | as it says |
dim:1 | size of dim.1 | ... |
dim:2 | size of dim.2 | ... |
... | ... | ... |
dim:N | size of dim.N | ... |
Architecture
Requirements
- instrument independent (detector can be moved)
- experiment independent (detector can be moved)
- calibration data for a particular detector should be transferable (as a self consistent file)
- calibration data should be managed through API only (in order to prevent adding/removing unknown files without history)
- API + GUI for central management
Combination of FS + DB-like file (hdf5 for uniformity)
Location in LCLS
/reg/g/psdm/detector/alignment/...
/reg/g/psdm/detector/calib/ # "/reg/g" is it good?
/reg/d/psdm/<INS>/<experiment>/calib # path to experiment-dependent calibration
/reg/d/psdm/calibdet/ # instrument and experiment independent path
- cspad2x2/
- pnccd/
- epix100a/
- cspad/
- <detname-detid>.h5
- <detname-detiid>.h5
Location in local
- <path>/calibdet/cspad/<detname-detid>.h5 # keep path?
- <path>/<detname-detid>.h5 # or use it directly?
Data flow
- who produces and supply constants
- who is allowed to submit constants
- whi is allowed to access constants
- ACL inside API or using OS
- ACL for all or particular detector/type/ etc.
TBD
Open questions
- Do we have to account for detector version, FEE version, controller version, etc?
- one DB file per
- detector version idx
- detector name (idx-s inside?)
- db location
- file name
- master file
- when constants are updated (file open to write) they are not available... Lock to resolve.
References