Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • All calibration constants for particular detector id (detid - index of the detector version) will be kept in a single hdf5 file named as <dettype>-<detid>.h5
    • Schema of this file contains a few levels which accounts for constant types, time stamp ranges, versions of constants.
    • Beside main functionality each level contains dictionary of tagged parameters and dictionary of history records.
  • These files are grouped in the directory for detector type; ex.: cspad, cspad2x2, pnccd, etc.
    • The same directory contains files with aliases <aliases1>.als which map human readable detector name-and-version with appropriate <dettype>-<detid>.h5 file.
  • All detector type folders in regular case are collected under calib directory, although it is assumed that calibration files can be used directly.
  • The calib directory may be nested in three locations;
    • repository - experiment-independent space with FS back-up, contains most complete calibration files in terms of time stamp and versions,
    • experimental work-space - experiment-dependent space, contains squeezed version of calibration files with time stamp and versions essential for particular experiment,
    • local work-space - experiment-independent arbitrary space, with squeezed files similar to experimental work-space.

...

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 (float)                                                    # 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
 tagsdictpars (dict)                                                        # dictionary of tagsparameters associated with this version of detector
 history (dict)                                                     # dictionary of history records paired as (tstamp:record)
 <ctype>/                                                           # folder for calibration type, ex.: pedestals, rms, mask, etc
          ctype (str)                                               # calibration type name
          tagsdictpars (dict)                                               # dictionary of tagsparameters associated with calibration type
          history (dict)                                            # dictionary of history records paired as (tstamp:record)
          <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 (float)                   # time stamp for the beginning of the validity range
                                  tsend (float)                     # time stamp for the end of the validity range
                                  defaultv                          # reference to the default calibration, ex:  <vers-tstamp2>
                                  tagsdictpars (dict)                       # dictionary of tagsparameters associated with validity range
                                  history (dict)                    # dictionary of history records paired as (tstamp:record)
                                  <vers-tstamp1>/                   # folder for version created on tstamp1
                                                 tsvers (float)     # tstamp1 of this version production 
                                                 calib (ndarray)    # calibration data
                                                 history (dict)     # dictionary of history records paired as (tstamp:record)
                                                 tagsdictpars (dict)        # dictionary of tagsparameters, 
                                                                    #   ex: array size, number of dimensions, shape, data type, experiment, run, comments, author

                                  <vers-tstamp2>/                   # folder for version created on tstamp2
                                                 tsvers (float)
                                                 calib (ndarray)
                                                 history (dict)
                                                 tagsdictpars (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

...

  • 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 file scheme.
  • Each detector may have optional predecessor, successor, and other parameters kept in the dictionary of tagsparameters.
  • 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 parameters 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 unlimited. Default calibration is defined by the reference default version defaultv.

Metadata in

...

dictpars

Below are the lists of metadata fields which potentially can be used to define detector configuration, calibration parameters etc.

...

Field nameDescriptionMore details, example
dettypedetector typeCSPAD, CSPAD2X2, EPIX100A, etc.
detnamedetector unique name(if any) ex.: Camera1
detaliasalias nameif it is hard to memorize the entire name, ex.: 'cspad1'
detidxdetector indexinteger number which codes the hardware version
detidxaliassymbolic alias of the indexcan be used if it is hard to memorize the index integer number
detcompidx:001list of component indexesjust in case if we are going to retrieve calibration parameters for separate components
detidxprevdetector index for previous versiondetector index for previous version (if available) for the purpose of old calibration search
detidxnextdetector index for next versiondetector index for next version (if available) for the purpose of new calibration search
dettsectime-stamptime stamp associated with beginning of the validity range for new configuration
detcom:001comments for this hardware versionas it says {key:comment}
dettagdetpar:001other tagsparametersjust in case if something is forgotten in this table

...

Field nameDescriptionMore details, example
calibtypecalibration typeex.: geometry, pixel_status, pixel_gain, pedestals, common_mode, etc.
tsectime stampbeginning of the validity range
exporiginal experiment(if available) where calibration constants were obtained
runnumoriginal run number(if available) where calibration constants were obtained
runbeginbegin run number(if available) for validity range
runendend run number(if available) for validity range
sourceoriginal DAQ data sourcedata source from DAQ, ex.: 'CxiDs2.0:Cspad.0'
srcaliasdata source aliasex.: 'cspad'
calibversversion tagparin order to access using symbolic name or some alias
calibversaliasversion aliasif it is hard to memorize version tagpar
com:001comments for this versionas it says {key:comment}
tagpar:001other tagsparametersjust in case if something is forgotten in this table

...

Is reserved to support common methods of all project classes. For now it stands for manipulations with tags dictpars but not limited to.

Code Block
o = DCBase()

# acess methods
tagsdictpars = o.tagsdictpars()                    # returns (dictdictpars) dictionary of tagsdictpars associated with each object
tagpar  = o.tagpar(k)                    # returns tagpar value for key k
log  = o.history(fmt)              # returns (str) history records preceded by the time stamp (default fmt='%Y-%m-%dT%H:%M:%S%Z') as a text 
d    = o.histdict()                # returns (dict) history dictionary associated with current object

# management methods
o.set_tagsdictpars(d)                      # set (dictd) dictionary of tagsparameters for object
o.add_tagpar(k,v)                     # add (k,v) tagpar to the dictionary of tagsparameters for object
o.del_tagsdictpars()                       # delete all tagsparameters from the dictionary
o.del_tagpar(k)                       # delete tagpar with key k
o.set_history(d)                   # set (dict) as a history dictionary of the current object
o.add_history(rec, ts)             # add (str) record with (float) time stamp to the history dictionary (ts:rec). If ts is None - call current time is used as a key. 

...