-
Notifications
You must be signed in to change notification settings - Fork 16
Home
The fundamental function of the calibration database is to serve the various sets of calibration constants necessary to reconstruct data from a particle physics detector with multiple quasi-independent sub-detectors. Each sub-detector will have its own unique needs for the form and function of constants. These constants will change as a function of run number, and the run number boundaries between changes in the constants will be different for different sub-detectors. In addition the procedure for obtaining the constants may change over the life of the experiment; the definition of "the best constants" for a given run will be a function of time. These points in time when new constants supersede old will also vary for different sub-detectors.
Let's take a simple example of calibration data, say "target position," which is defined by three coordinates x, y, z, each is represented by a floating point number.
Using C++ as an example language, if a user asks for "target position":
auto data = calibration->GetCalib("/target/position");
the calibration database should provide the appropriate data in the current context so it can be used like:
if (data["z"] > 30) ...
"The current context" is the key phrase here, since the values of target position could be different for different runs, values may be updated with time, e.g., if more precise calibration is performed. Also, a user may want to use a personal version of constants.
The picture above illustrates features of CCDB that involve control of the context:
- The data can by addressed by filesystem-like paths (
target/position
) - The returned data depends on a run number.
- A history mechanism: by default CCDB honors the last assignment of data to a particular run, but one can always recover values stored in the past.
- Variations (equivalent to "branches" in version control systems): users have an ability to create and work with alternative versions of the data, varying the run assignments and/or the data itself.
-
ccdb
command line interface to manage and introspect constants - Web interface
- C++ API
- Python API
- Java API
- Tools and utilities to manage an infrastructure