Page History
...
Code Block |
---|
/ # top-root-level contains info for the unique detector version dettype (str) # detector type name, ex: cspad, pnccd, etc detid (str) # unique detector id, ex: 01234 tscfile (uint) # time stamp of creation of this structure predecessor (str) # name of the previous detector if available or None successor (str) # name of the next detector if available or None tags (dict) # dictionary of tags associated with this version of detector <ctype>/ # folder for calibration type ctype (str) # calibration type name tags (dict) # dictionary of tags associated with calibration type <tstamp-range>/ # folder for time stamp validity range <tstamp>[-<tstamp-end>]/ # folder for validity range. If <tstamp-end> is not specified - then valid to the end tsbegin (uint) # time stamp for the beginning of the validity range tsend (uint) # time stamp for the end of the validity range defaultv # reference to the default calibration, ex: <vers-tstamp2> tags (dict) # dictionary of tags associated with validity range <vers-tstamp1>/ # folder for version created on tstamp1 tsvers (uint) # tstamp1 of this version production calib (ndarray) # calibration data tags (dict) # dictionary of tags, # ex: array size, number of dimensions, shape, data type, experiment, run, comments, author <vers-tstamp2>/ # folder for version created on tstamp2 tsvers (uint) calib (ndarray) tags (dict) <tstamp2>[-<tstamp2-end>]/ # folder for the next validity range. pedestals/ # folder for the next calibration type, pedestals rms/ # folder for the next calibration type, rms |
Scheme features
- Detector name consists of a common part <dettype> and unique part <detid>.
- Alias to the detector name should be kept in separate dictionary outside the scheme.
- Each detector may have optional predecessor, successor, and other tags in the dictionary.
- Calibration type folders contain info about calibrations of particular type, ex: pedestals, rms, status, mask, background, etc.
- Each calibration type contains a set of time stamp ranges defining calibration validity range. If the second time stamp of the range is missing it is considered as infinity (by the end).
- The time stamp range folder contains tstamp_begin, tstamp_end (int) values, dictionary of tags associated with this folder, reference to the default calibration, and folders with calibration versions, distinguished by there production time stamp.
- The number of calibration versions for each time stamp range is not limited. Default calibration is defined by the reference default_version.
*
Base class
Code Block |
---|
DCBase - base class for this project ==================================== tags = obj.tags() # (dict) dictionary of tags associated with each object tag = obj.tag(k) # returns tag value for key k obj.set_tags(d) # set (dict) dictionary of tags for object obj.add_tag(k,v) # add (k,v) tag to the dictionary of tags for object obj.del_tags() # delete all tags from the dictionary obj.del_tag(k) # delete tag with key k |
Access methods
Code Block |
---|
DCStore methods
===============
tscfile = cs.tscfile() # (int) time stamp of the file creation
dettype = cs.dettype() # (str) detector type
detid = cs.detid() # (str) detector id
detname = cs.detname() # (str) detector name of self object
predecessor = cs.predecessor() # (str) detname of predecessor or None
successor = cs.successor() # (str) detname of successor or None
ctypes = cs.ctypes() # (list) calibration types in the file
cto = cs.ctypeobj(ctype) # (DCType ~ h5py.Group) calibration type object
_________________________________________
nda = cs.get(ctype, tsp, vers) # (str) ctype - calibration type
# (...) tsp - parameter to get time stamp (evt, runnum, ts_sec)
_________________________________________# (int) vers - version of calibration, None - use default
DCType methods
==============
ctype = cto.ctype() # (str) of ctype name
tsranges = cto.ranges() # (list) of time ranges for ctype
tsro = cto.rangeobj(tsrange) # (DCRange ~ h5py.Group) time stamp validity range object
DCRange methods
===============
tsbegin = tsro.begin() # (int) time stamp beginning validity range
tsend = tsro.end() # (int) time stamp ending validity range
versions = tsro.versions() # (list of uint) versions of calibrations
versodef = tsro.versdef() # (DCVersion ~ h5py.Group) reference to the default version in the time-range object
verso = tsro.versobj(vers) # (DCVersion ~ h5py.Group) specified version in the time-range object
DCVersion methods
=================
tsvers = verso.tsprod() # (int) time stamp of the version production
calibdata = verso.calib() # (np.array) calibration array
|
Management methods
Code Block |
---|
DCStore methods =============== cs.set_tscfile(ts) # set (int) time stamp of the file creation cs.set_dettype(dettype) # set (str) detector type cs.set_detid(detid) # set (str) detector id cs.set_detname(detname) # set (str) detector name of self object cs.set_predecessor(pred) # set (str) detname of predecessor or None cs.set_successor(succ) # set (str) detname of successor or None cs.add_ctype(ctype) # add (str) calibration type to the DCStore object cs.del_ctype(ctype) # delete ctype (str) from the DCStore object DCType methods ============== cto.add_range(tsr) # add (str) of time ranges for ctype cto.del_range(tsr) # delete range from the DCType object DCRange methods =============== tsro.set_begin(tsbegin) # set (int) time stamp beginning validity range tsro.set_end(tsend) # set (int) time stamp ending validity range tsro.add_version(vers) # set (DCVersion ~ h5py.Group) versions of calibrations tsro.set_versdef(vers) # set (DCVersion ~ h5py.Group) versions of calibrations tsro.del_version(vers) # delete version DCVersion methods ================= verso.set_tsprod(tsprod) # set (int) time stamp of the version production verso.add_calib(nda) # set (np.array) calibration array |
...
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 | ... |
API
Parameters
dettype
(str) - detector type: cspad, cspad2x2, pnccd, fccd, opal, epix100a
, etc.
...
version
(int) - time stamp of the version creation
Initialization
Code Block |
---|
# Import from PSCalib.DCStore import DCStore # inport DCStore (Detector Calibration Store) object # Initialization CPATH_DEF = '/reg/g/psdm/detector/calib' # default calib directory cpath = '<path>/calib' # local calib directory cpath = '<path>/<dettype>-<detid>.h5' # direct to file cpath = env.calibDir() # '/reg/d/psdm/<INS>/<experiment>/calib' - accept current directory detname = 'pnccd-12345678' # standard name includes detector type, dash, and n-digit id number detname = 'Camera1' # alias cs = DCStore(cpath, detname) # creates a DCStore object. """ get calibration store object Input parameters: cpath [str] - path to the hdf5 file or calibration directory. If cpath is a path to hdf5 file - next parameter is ignored. If cpath=None - default path is used. If cpath is specified as a path to directory (or default) then detname can be an alias. detname [str] - name/alias of the detector """ |
UI - acess methods
Code Block |
---|
p = tstamp parameter to identify constants, which can be retrieved from evt.run() - run number, evt nda = cs.get(ctype, p) # where ctype stands for pedestals, status, rms, geometry, etc. # or specific access methods: nda = cs.pedestals(p) nda = cs.pixel_status(p) nda = cs.pixel_rms(p) nda = cs.pixel_mask(p) nda = cs.pixel_gain(p) nda = cs.pixel_bkgd(p) nda = cs.common_mode(p) geo = cs.geometry(p) |
...
Overview
Content Tools