EventBookkeepingManagementforCLEO-3
Most aspects of data analysis software
share a common bookkeeping task,
maintaining relationships between
members of two sets of objects. For
example, the tracks created by pattern
recognition algorithms must be
correlated with the detector hits that
contribute to them. Conversely,
it is important to be able to determine
which tracks each hit contributes
to. Similar bidirectional
correlations must be established and maintained
in vertex reconstruction and for event
kinematics. The flow of event data
analysis can usefully be described as
the identification of increasingly
complex relationships within the data.
It would simplify the software
environment if this bookkeeping were
managed by a single sharable
package. The bookkeeping would only have
to be written and debugged once, and
code writers would be freed to
concentrate on the algorithms. To
this end, the CLEO collaboration has
written software, called
"Lattice," which is designed to perform the
bookkeeping task described above.
Lattice allows the user to add and
remove connections between objects
(e.g., hits on tracks). It allows data
to be associated with each connection
(e.g., hit contributions to track
chi-squared). It can give the
user a list of all objects to which a given
one is linked (e.g., all hits on a
given track), or all the objects which
share links with a given one (e.g., all
tracks which share hits with a
given track). An object can be a
member of several Lattices
simultaneously.
Lattice is designed to have minimal
impact on existing code. For example,
it does not require any special
inheritance by data classes that will used
by Lattice. The only behavioral
requirement is that data objects have
identifiers, used by lattice to
distinguish objects. Lattice's internal
data storage scheme is transparent to
the user. We will report the
initial results of our use of Lattice.