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.
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.
- Device drivers for certain VME/CAMAC controllers on Linux
- Interface codes to certain VME/CAMAC modules
- Scripts that configurate data reading sequences
- Data buffering and data streaming
- Event builder
- Framework for online analysis
- Online data viewer
- Simple online data storage
- Component Framework and communication system between components
- System control script
- Control panel and control panel configuration script
- System logger
- Summary generator
What KiNOKO
Does Not Provide
The following are some of the features KiNOKO does not provide.
- Device drivers for controllers that are not mentioned above
- Interface codes to modules that are not mentioned above
- Online Analysis Program
- Event viewer that illustrates measurement devices
- Specialized data storage
- Data storage for offline analysis
Summary
- Kinoko is a network-distributed parallel processing system.
- Kinoko can be used in various experimental setups without editing its source code thanks to its universal scripting system.
- Kinoko can interface with various external systems, such as an SQL database, analysis tools, and so on.
- Kinoko grows as more users use it because every part of the system is reusable.
- Kinoko might be a useful system for you!
Edited by: Enomoto Sanshiro