DAQ III
To test the design of a DAQ system, it is wise to try to simulate the behaviour of the system before actually building it. This process can reveal flaws without spending money for real hardware, and can give guidelines for the actual layout of parts of the system like buffer sizes.
What Program Language is used?CLEO is in the position, that some collaborators already purchased a MODSIM license. Therefore, we were able to instantly use one of these seats at the University of Illinos, Urbana/Champaign. Additionally, a very useful library (daqsim) has been built by the engineering group in their HEP departement. This (object) library was re-used and slightly adapted to the needs of the CLEO DAQ simulation. In the next sections the basics objects are explained.
The Packet Objects The basic object in the simulation is the object describing the data moving through the DAQ system. This includes not only the event data but also all control commands exchanged by the various parts to regulate the data flow (called ``Flow Control'').
The basics class, from which all other classes are derived, is called PacketObj. It contains data fields that are needed for sending and receiving packets and information for debugging purposes. The most important attribute of a packet is its length, therefore this information is found in PacketObj
Two basics subclasses are then parent to all used packets
in the program: DataPacketObj and ControlPacketObj.
The first one contains event information, including the event id,
and they can be merged to simulate the event building.
The second type holds commands and priorities,
to simulate the flow control mechanism.
This picture shows the
Link to the PacketObj source code.
The Link Objects
DAQ III