CodaLite

From GlueXWiki
Revision as of 15:03, 9 July 2008 by Wolin (Talk | contribs)

Jump to: navigation, search

codaLite Data Acquisition Package

codaLite is a lightweight and easy to install and use DAQ package suitable for everything but full-scale high-speed DAQ systems (CODA3 is being developed for these). It has been in use for a number of years in numerous test stands at JLab and at universities. It is composed of mature CODA3 components, prototypes of CODA3 components, and other software written specifically for codaLite.

codaLite includes much of the functionality of CODA3, but sacrifices scalability and robustness against component failure for simplicity and ease of use. Extensive use is made of the cMsg interprocess communication package (a CODA3 component), which allows for a complete decoupling of DAQ components so that in addition to being run together as a system, they can be developed and tested in isolation. In codaLite the cMsg system is used both for run control and event transfer, whereas in CODA3 the ET system (a very high-speed shared-memory based interprocess communication package) is used for event transfer.

codaLite optionally supports AFECS, the CODA3 run control package. AFECS provides a graphical run control interface, real-time histograms of event and data rates, etc, but requires creation of configuration files covering all possible DAQ configurations you might need (not a big deal in most cases). If AFECS is not used, simple scripts are used to start and stop runs.

All codaLite components run on Linux and Solaris, and most components are supported on VxWorks. Readout libraries are available to read out common front-end DAQ modules such as the JLab F1 TDC, JLab FADC 250, CAEN V792 integrating ADC, etc.

codaLite.tar.gz can be found on the CODA ftp site. Included in the distribution is a README file describing how to install and use codaLite.


codaLite Components

codaLite components are all normal programs compiled and linked in the usual manner. Some are user customizable. These include:


cMsg Interprocess Communication Server

This Java program brokers all communications, and should not be modified. Typically only one copy needs to be running, and it can be started at boot time. The cMsg server is not supported on VxWorks.


Data Source

This C++ program collects event data and ships it off to an event builder process. It is designed to be customized by the user to collect data from the devices in his or her particular DAQ system. It supports a polling mode on Linux, and both a polling mode and a VME interrupt mode on VxWorks. DAQ systems must run one or more copies of these components.


Event Builder/Recorder

This C++ program receives all data from the Data Sources, combines the data into a single event, then writes the events to disk. Typically EVIO format is used (the EVIO package is a CODA3 component), but the program can be customized to use any format. Optionally this program can ship events to other processes for monitoring. Typically one copy of this program needs to be running, but hierarchical event building is supported.


File Analzer

This example C++ program reads event data from files written in EVIO format by the Event Builder/Recorder and delivers the data to a user-written analysis routine.


Online Event Analyzer

This example C++ program can receive full events from the Event Builder/Recorder, or partial events from an individual Data Source, and analyze them in real time. The analysis routines are supplied by the user. Combined with a graphics package, such as ROOT, the Online Event Analyzer can display analysis results in real time.


evio2xml

This utility dumps EVIO files to the screen in XML format, and is very useful for debugging.


cMsgLogger

This Java utility spies on cMsg communication streams and dumps message information to the screen. It is typically used for debugging.


cMsgMonitor

This utility takes a snapshot of the current configuration of the cMsg system and prints a summary to the screen. It is typically used for debugging.


codaLite Usage

FAQ