Transient Event Model

Purpose and Functionality

Transient event model (TEM) describes the representation of event data in the memory. The transient representation should be optimized for execution efficiency and code readability. TEM will be used in all LHCb data handling applications and should allow code reuse between them (simulation, reconstruction, analysis, event display, trigger level 2 and 3, etc.). The application code should be shielded from any kind of event data persistency. 

TEM consists of class definitions and relationships between transient event objects. It contains

Basic container objects which contain event entities (e.g. digits, tracks) are of type ObjectSet. This class implements one of the STL container classes vector<T> or list<T> (other STL container classes are not foreseen). As there is a need that the daughter objects know about the mother container, it is necessary to re-implement the STL-like interface in the class ObjectSet.

Objects of most of the types from the high level event structure have to be identifiable. It means, that they have to inherit from class IdObject, which holds the Identifier.

The current TEM has been developed according the requirements known from SICB. The complete SICB output can be stored using the current TEM.

Access and Interfaces

Finding objects and registering newly created objects of TEM has always to go through the Event Data Service (EventDataSvc). Algorithms can request objects of TEM from the Event Data Service, which makes them available (either they are already in the transient data store, or it requests them to be loaded from Persistent Data Store, if available), i.e. it passes the reference of the objects back to the algorithm.

Dependencies

The TEM is the basic building unit, used by other LHCb components. It will depend on the identification package. The TEM uses heavily the Standard Template Library (STL) and Class Library for High Energy Physics (CLHEP).