EDM FAQ: Choosing to make an object class Streamable or Storable


This question is under active review in the context of the High Level Objects/ Physics Objects Review. It is desirable for all such objects to share the same general interface features, so users can become accustomed to the level of indirection required to work with collections of such objects. Stay tuned....

If one has a small object class such as a CdfHit or an Id (containing only one simple data member), then one should probably choose to make that class Streamable but not Storable to avoid the extra class design requirements and storage overhead associated with StorableObjects. Further one may wish to avoid inheriting from StreamableObject in order to avoid declaring any methods virtual in the class. This recommendation is unlikely to change.

If one has a large object class (containing several data members), then one has a choice whether or not to make that class Streamable or Storable. If the large object class is always used as a member of a StorableObject collection, and if the history information is always the same for the objects in a particular collection, then the HLO review recommendation is that a physics object class be Streamable and the collection be Storable. However, we do have physics object classes which for whatever reason, chose to be Storable instead. These recommendations are still being discussed and it will take some time to adapt all of Offline to abide by the eventually agreed-to statement.


Comments on this page may be sent to Rob Kennedy