This package provides basic utility functions and classes on which the rest of the toolkit is based. Some foundational parts include:
- Interface :: Wire Cell makes heavy use of the Interface software pattern. The entire
iface
package is mostly made of interface classes. Of particular note is theInterface
interface class which is used to mark major component classes. Component classes can be instantiated while maintaining loose coupling between compilation units. - NamedFactory :: is the mechanism to allow construction of an interface given its base class type and the “name” of its concrete implementation. Client code which instantiates an interface does not compile against the concrete implementation and only indirectly links against the shared library in which it resides.
- Point :: is a simple but useful implementation of a 3D vector.
- Units :: is a system of units. Any and all numeric quantities in Wire Cell which has units is assumed to be in this system of units
- Testing :: is some functions that facilitate writing tests such as
Assert
. Two more areTimeKeeper
andMemUsage
which are bundled together inExecMon
. As their names imply they help code measure how much time and memory it uses.
- Point Cloud
- a point-cloud data structure compatible with WCT tensor data model.
- Rectangles
- a 2-D interval tree. Similar to a sparse array of pixels but requiring no grid.