Documentation for the CLEO Live Project

Table of Contents

Introduction to the CLEO Live Project

The CLEO Live project is an attempt to display actual CLEO data for educational/outreach purposes. What the public sees is a web site, mostly consisting of introductory material as to what the experiment is, with one page in the site having an applet. This applet is the primary attraction. What the applet displays are some the paths particles take during a given event. The applet works by creating a network connection between itself and an event server, which sends the applet these paths or tracks in an the easily displayable format of an object containing a label for the event and arrays containing parameters to arcs and similar Java-supported geometric objects. The events are as close to as real time and in real sequence as can be achieved with no live Cornell code and minimal UIUC maintenance.

How to use/maintain CLEO Live

To change the events in CLEO Live, first get the generated event list from Mats (disp.dump). Next, run perl in the same folder as the disp.dump file. Finally, place the generated trig.txt file into the C:/CleoLiveData folder of Lachesis. Logging out will cause all the current events to be flushed and this list to be read in and processed. Should anything go wrong, or if you want to add features to CLEO Live, please email

Basic structure of CLEO Live's source code

There are three basic steps the code has to handle:
  1. Aquire the event
  2. Process and serve the event
  3. Receive and display the event
The first step, to aquire the event, takes advantage of Suez, the standard offline CLEOIII analysis tool, to generate a large file that is a list of semiprocessed events. Another appication is used to bring the file to an easily processed state. This file-based can be illustrated nicely by a directed graph:

Aquire -write file-> file -read file-> preprocess --write file---> file ---read file---> Process --network connection --> Display

Currently, our method gives us the component momentums and charge sign for each track. From this, we can derive an circle in space that include the curve, and what part of the circle includes the curve. This is enough information to desplay a track. Also, our method gives us a lable for the event.

The second step, to process and serve the event, is handled by a queue and multiple threads. The queue holds events that have been processed, but not served. Threads are Java's mechanism for parallel behavior. This allows both processing and serving behavior to have equal use of the processing power at hand. However, only one thread at a time is given access to the queue.

Processing and serving are handled by and various threads, as well as some files to support a queue, all of which are given by name in the comments to

The third step, to receive and display the event, is handled quite simply by receiving an event object containing the event label and a list of coordinates which define an arch and plotting them on demand. After an event has finished, the user has the choice of getting another one. More advanced functionality may be added later. Please check our links session for a demonstration of this user interface.

Receiving and displaying are handled by

Links to CLEO Live web sites

Currently, there is only one CLEO Live web site, and it is at UIUC.

High Energy Physics at UIUC, Last modified June 1, 2000
Return to the software index