As mentioned above processes can specify what kind of
events they receive. Every event is given a set of
control words when they are injected into the DD system.
These words are used to request events of a given type.
In the E787 experiments one of these control words is the level 0
trigger information. The different data loggers (E787 currently
writes to 10 different tape drives in parallel) specify
which event types they want, thus the different event triggers
are written to different tapes.
Currently there are four control words: ctlw1, ctlw2, ctlb1 and
ctlb2. The first two operates on a equal basis, i.e. a process
requests events with say ctw1 == requested_value, the other
on a bit basis, i.e. a process requests events with - say - second
bit of ctlb1 set. The exact requirements can be specified
by the user.
Processes can either request every event, request a prescaled fraction
of events of a given type or receive an event only if they ask
for it. A process can also request that a given number of
events are set apart for him, such that he always gets an
event immediately if he asks for it. This feature is also
useful if the data taking is characterized by a spill structure
(such as at the AGS).
In which order will processes receive events?
The fifos can be imagined as an array (see figure
) and a process attaching to the
DD system will receive by default the first free fifo within that
array (note that processes are allowed to attach/detach to/from the
DD system at any time).
This behaviour is important if one has consumer processes that modify the event or
if one wants the data loggers to log the data before other lower priority / very
slow consumers access it.
Fifos can be declared at initialisation time in a given order (so called
static fifos). These fifos will be inactive (i.e. no events will be
written into them) until a process attaches to them and activates them
(user routine ddu_start(). These static fifos can be declared
in the correct order in the user routine ddu_def_static_fifos).
Figure:
Schematic view of the event distribution within the fifo system.