We have imposed the requirement that we try to make use of the Ma and Meesen generic digit containers ( requirements, implementation).
In their model a digit container (now called IdentifiableContainer) holds a collection of links to digit subcontainers (a subcontainer is called a DigitCollection). Each of the subcontainers is a StoreGate DataObject which implies that it is created whole and independently from other subcontainers. Thus the granularity for unpacking raw data is that of the subcontainers.
Designers of specific digit containers (e.g. muon MDT) are required to define their subcontainer and appropriate converters to write and read from the various persistent formats (raw data, zebra, objectivity, root). They must also provide an identifier for their collection and (perfect) hash function to convert the identifier to an index.
Here are some comments and issues for these containers.
1. The ability to rapidly unpack a fraction of the data is an important requirement for the trigger. This is restricted to separate construction of a series of whole subcontainers through StoreGate. Can we obtain adequate performance with this restriction?
2. It is implied but not stated that the identifiers must provide perfect hashing functions rather than a general hashing function. I.e. the mapping between identifiers and their indices must be one-to-one, not one-to-many.
Also, if N identifiers are to be hashed, are they required to map to the fully compact range (0, N-1)?
3. In private discussions with Hong Ma it became clear that they are providing an implementation of a generic container holding identifiable data objects. For our purpose the data objects are digit subcontainers and the generic container is part of the overall digit container.
They do not expect that their IdentifiableContainer provides the full interface for our digit container. Also they do not provide the digit subcontainers.