Leader: Taka Yasuda
Overview Infrastructure Subsystems Call List Data Transfer D0 Databases Online Calib Documents
The calibration constants for the D0 detector are stored in the central Oracle database, organized separately for each subdetector. These constants need to be accessed by the D0 offline reconstruction program (d0reco) running at the processor farm at Fermilab or at the processor farms at remote institutions. In order to reduce the number of concurrent access to the central database, we have implemented a three tier archtecture that is comprised of the central Oracle Database, CORBA servers and CORBA clients embedded in the d0 reconstruction program.
A calibration database object is defined as a CORBA idl object for transportability and also as a d0om (d0 object model) object for persistency. The idl definition is generated from the database table design in two steps; first the table definition is mapped to a dictionary file and then from the dictionary file an idl definition is generated.
The server code is written in Python, generated from the dictionary files. The ORB for our Python server is omniORB.py from omniorb.sourceforge.net.
The client code embedded in d0reco is written in c++. The header files for c++ classes that correspond to database tables are generated using a code generator from the dictionary files. The ORB for our c++ program is ORBacus from IONA technologies.
A CORBA client requests information to a CORBA server and in turn the CORBA server queries the central database. The results of the query are returned by the CORBA server to the client and also are cached in memory or in a disk file.
The CORBA server also can be configured as a proxy server to the central server. This configuration is intended for use at the remote institutions. In this configuration, the proxy server sends requests to the central server and the central server in turn queries the database. When the results of the query are returned to the proxy server, they are stored in disk files as cache. Clients running against the proxy server in the remote instituion will request information to the proxy server. If the proxy server has the information in the disk cache, it will return the information from there. If not, it will send a request to the central server.
The calibration constants are organized as a hierachical tree structure. At the top of the tree is the D0 Offline Calibration database that keeps track of the valid calibration sets for the individual subsystems, for a given run. A d0reco queries this table first and then descends to the subsystem database. A subsystem calibration database is also organized as a hierachical tree structure, representing the substructure of the detector hardware. We have chosen to define a set of separate database tables for each subsystem. There are nine subsystems (D0 top level, smt, cft, cps, fps, cal, muon MDT, muon MSC, and muon PDT).
We run ten database servers, one for Run configuration, and nine servers for calibration databases. One set of calibration constants contains 700k rows for smt, 100k rows for cft and 55k rows for cal. The rest of sub-systems have a significantly smaller number of rows.
The central servers will run on Linux nodes without 24/7 support. We have a fail over procedure in place in case of trouble in the server node.
Most of the sub-detector systems are calibrated using the D0 online data acquisition system and the collected calibration constants are written to the online calibration database. Calibration constants from a successful calibration run are transfered to the offline calibration database. The database table designs for the online and offline databases are not identical. The online tables are designed to suit the data acquisition procedure and the offline tables are designed to suit serving the data to the d0reco clients.
Once the data are transfered to the offline database from the online database, a calibration tree must be constructed so that one can traverse the tree from the top of D0 Offline calibration table down to individual channels of the sub-detectors.
Workshop on Calibration Database Browsers
This page maintained by Taka
Yasuda
Last modified:Dec. 17, 2002