Abstract for CHEP98 David Adams 20may98 1550 TRF++: an object-oriented framework for finding tracks D. L. Adams, S. Kulik, B. Kulik, N. Graf TRF++ provides an extensible, object-oriented framework for finding and fitting tracks in particle physics detectors. The concepts natural to the problem are mapped onto abstract classes. These include surfaces, layers, clusters, hits and tracks. There are also abstract classes to describe track propagation, fitting, finding and filtering. The base part of TRF++ provides concrete subclasses where they are independent of surface type while TRF++ extensions provide implementations for particular surface types. Present extensions include cylinders with axis along z, planes perpendicular to z and planes parallel to z. The track-finding part of TRF++ is based on a road-following algorithm and the one concrete implementation uses a Kalman filter update. This allows for easy integration of interactions such as multiple scattering and, most importantly, can be very CPU-efficient. The latter is essential so that TRF++ can be applied to modern hadron collider experiments with their high data rates and high track densities. TRF++ is implemented in C++ because of its wide availability, its strong support for object-oriented concepts and its inherent CPU-efficiency. It is intended that TRF++ conform to the new ANSI/ISO C++ standard. It has been successfully compiled and run using the KAI compiler[1] under IRIX6. TRF++ is organized as a collection of packages with acyclic dependencies so that users may limit their use (and dependency) to the relevant pieces. Unneeded extensions or the track-finding part may be omitted. The software within packages is organized into components consisting of header, implementation and test files. The implementation is compiled and put into the package library. The test is a main program which tests the code for the component. Typically a component contains one class and associated free functions. This organization is very close to that described by Lakos[2]. The instructions for building the software are contained in CTEST[3] input files such as COMPONENTS listing the components for a particular package. This avoids the need to duplicate instructions in different packages and should ease integration into another environment. The software has gone through two major design/implementation cycles. The D0 experiment plans to make use of TRF++ for its run II offline reconstruction. At present, it is being used to find Monte Carlo tracks in the D0 central scintillating fiber and silicon strip detectors. A description of TRF++ may be found at http://www.bonner.rice.edu/adams/trf++. References ---------- 1. See http://www.kai.com/C_plus_plus. 2. J. Lakos, "Large Scale C++ Software Design", Addison-Wesley, 1996. 3. CTEST is described at http://www.bonner.rice.edu/adams/ctest and in a separate submission to this conference.