Overview

Kinoko is a data acquisition system being developed for the KamLAND experiment. It is designed to handle all of the KamLAND electronics, calibration devices, monitoring instruments, and other related measurement devices, and moreover to be augmentable for future applications. In order to have such a wide scope without troublesome modifications on the part of the user, Kinoko is designed to be flexible, scalable and user-friendly.

Home

Features

Universal Scripting Language
Kinoko is equipped with a universal script parsing engine which is independent from any particular script syntax. The parsing engine is used everywhere in the Kinoko system to let users describe their own setups. By using the scripting system, users rarely need to edit the source code.

Reusable Device Interface
Code to access measurement devices is written in a similar manner to UNIX device drivers: it is a modular code block detached from the main application. The interface implements only functions to operate the device, rather than being coded for a particular use in a particular application. Due to its modularity and the universality, the code is highly reusable. Codes for some commonly used devices are already available and are distributed with the Kinoko package.

Integrated Network Environment with Distributed Object System
Kinoko has an Object Request Broker (ORB) subsystem as its infrastructure. ORB is a system that enables the Kinoko processes to access a remote object on a remote computer as if it were a normal local object. By using ORB, the Kinoko system operates as a network distributed parallel processing system while behaving as a single integrated system with no need for troublesome network procedures.

Runtime System Configuration with Component Framework
The top layer of the Kinoko system is divided into units called components. Each component has its own function, and the system consists of a set of the components. Components in Kinoko can be deployed onto computers and can be arranged and connected to each other at runtime by event notification, object sharing, and parameter sharing. With this component system, users can construct their DAQ system easily and quickly as an arrangement of existing components. Users also can add their own components into the existing system to process their experiment-specific analysis without changing the existing system.

Self-Describing Data Stream
In the data that runs through the data stream, the data descriptor in the beginning records the structure and meaning of the data itself. This enables implementation of generic components and analysis parts that do not assume the processing of a specific data structure, which makes the analysis parts that the user developed highly reusable. Also, if this information is recorded in a data file, it will reduce data management effort as well as the risk of mismanagement of data.

Detached User-Interface
Each user-interface (UI) is detached from the core of Kinoko. Communication between the core and the UI is done with simple text commands on normal TCP/IP connections. This architecture makes it easy to implement various types of UIs on various platforms in a variety of programming languages, which also helps keep the whole system independent from a particular platform and GUI library.

Scalability That Supports Anything From Distributed Systems To Single Processes
Due to network distributed processing by ORB and runtime component configuration of the component model, it is easy to expand the system to multiple computers. Users just need to edit a few lines in the script to add another computer. At the same time, ORB can put together what will normally run as several different processes into one single process, and using this, KiNOKO implements single process data acquisition programs.

SQL Database Connectivity
Kinoko has an SQL database interface, KDBC, which is similar to JDBC in Java. KDBC is also accessible from a script. By using this interface in a script, the script does not have to include parameters explicitly, and changes on the parameters will be reflected immediately and automatically, keeping the script simple. Moreover, by using an SQL database in an experiment, users no longer need to maintain their experiment parameters in many different places, such as the DAQ system, calibration system, data storage system, and analysis system.

And Much, Much More!
Kinoko encapsulates access to UNIX system-calls at the bottom layer of the system. Except for the use of the UNIX system service, the core of Kinoko is implemented with only the C++ standard library. Combined with the detached user-interface, these features help keep Kinoko portable.

In addition to the SQL database interface, Kinoko has an interface to access external mathematical libraries. By adding a new component, it is basically possible to add an interface to any external system.

Most functions in Kinoko were designed to be extensible. By adding a new class at a point of extensibility or "hot spot", new functionality can be easily added. The source tree of Kinoko has been divided into several independent parts so as to make each one reusable. In fact, there have already been several applications of partial-reuse of the Kinoko system, and some of them are quite unrelated to high-energy applications.

What KiNOKO Provides

The following are some of the features that KiNOKO provides.

What KiNOKO Does Not Provide

The following are some of the features KiNOKO does not provide.

Summary


Edited by: Enomoto Sanshiro