The aim of this example is to demonstrate the creation and reading of explicit object collections, associated with meta data.
The user creates a class library which contains the implementation of a Cluster, a Sector,
and an Event class. An event is associated to the information of the two sectors (a hadronic and an electromagnetic)
of a calorimeter. A Sector holds the energy clusters produced in the current event in this region of the calorimeter.
The user runs the LCG dictionary for these classes and builds the corresponding dictionary run time library.
A writer application writes the Sectors with their Clusters in two different database files. Two runs of events are written in two different databases. A collection writer application starts an iteration in the implicit collection of Event objects objects defined by the database/container specified in the writer and creates and Explicit ROOT Collection for a subset of all the events, generating meta data information from the existing stored data.
Finally, a collection reader application, performs an event loop over the event collection after applying a selection on the meta data.
All applications are linked against the user class library. The dictionary library is explicitly loaded during run time.
Make sure that you are using the correct compiler. If you are not using the afs installation at CERN, make sure you update accordingly the corresponding values in the GNUmakefile or/and the shell script.
The make file provides the following targets:
runreader reader runcollectionwriter collectionwriter runwriter writer dictlib userlib and clean.
The simplest way to build and execute everything in one go is by typing:.
make runwriter runcollectionwriter runreader