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
 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.

Back to Program

Back to ACAT Web page