GAUDI User Guide

Chapter 7
LHCb Event Data Model

In this chapter we present the structure of the LHCb Event Data model. For the moment only a small part of the model is implemented in the public release. Various sub-detector specific parts are under development and are implemented in private code. The table at http://cern.ch/lhcb-comp/Support/html/ConvertedSICBBanks.htm shows the current implementation status by comparison with SICB banks.

7.1 Glossary

Event data is logically subdivided in sub-events that are the results of a processing step. The following glossary is extracted from reference [6].

MC Event
is the output of the physics event simulation. This typically includes MC Particles and MC Vertices
MC Hits
are the output of the GEANT tracking step. They typically include detector entrance and exit point, energy loss etc.
FE data
is the simulated output of the detector front end, as seen by the hardware triggers, when this is different from Raw data.
Raw data
is the output of the digitisation step of the detector simulation, and the output of the data acquisition system for real data. For example, ADC and TDC counts.
Coordinates
are the output of the reconstruction program when applied to detector hits. This typically consists of hit coordinates, calorimeter clusters etc.
Reconstructed data
is the final output of the reconstruction program. This typically consists of tracks, particle ID, energy flow objects etc.
Analysis data
is the output of specialised analysis algorithms.

7.2 Top level event data structures

The event data objects are located in the event data store, which is one of the stores described in Chapter 6. The data in the store are arranged in a tree. This facilitates the location of objects within the store by human-readable identifiers. The tree structure consists of an Event root branching four sub-trees roughly corresponding to the processing steps: Monte Carlo event, Raw event, Reconstructed event, and Analysis event. A fifth branch for FrontEnd (FE) has been implemented in private code (available under L1/VELO CVS tree). Retrieving an identifiable object (see Chapter 6) from the store is based on the knowledge of the logical path. The paths so far implented are shown in the tables that follow. They are defined in the files:

    LHCbEvent/TopLevel/EventModel.h

    LHCbEvent/TopLevel/EventModel.cpp :

    Table 5 Top level Event data model

    Logical Path
    Type

    "/Event"

    Event

    "/Event/MC"

    MCEvent

    "/Event/Raw"

    RawEvent

    "/Event/Rec"

    RecEvent

    "/Event/Anal"

    AnalEvent

The LHCbEvent/TopLevel directory also contains the include files for the top level event classes (which are all derived from DataObject and are therefore identifiable). The identifiable objects in the MonteCarlo, Raw, Reconstructed, and Analysis event sub-trees are all container classes, containing instances of classes that inherit (directly or indirectly) from the class ContainedObject.

7.3 Monte Carlo event

The Monte Carlo event sub-tree contains output from the event generators and from the Monte Carlo tracking. The include files for the contained classes can be found in LHCbEvent/MonteCarlo/*.h with obvious names

Table 6 Monte Carlo Event data model

Logical Path
Container Type

"/Event/MC/MCParticles"

MCParticleVector

"/Event/MC/MCVertices"

MCVertexVector

"/Event/MC/MCTrackerHits"

MCTrackingHitVector

"/Event/MC/MCVertexHits"

MCTrackingHitVector

"/Event/MC/MCVertexPileUpHits"

MCTrackingHitVector

"/Event/MC/MCMuonHits"

MCTrackingHitVector

"/Event/MC/MCRichRadiatorHits"

MCRichRadiatorHitVector

"/Event/MC/MCRichPhotodetectorHits"

MCRichPhotodetectorHitVector

"/Event/MC/MCECalHits"

MCCalorimeterHitVector

"/Event/MC/MCHCalHits"

MCCalorimeterHitVector

"/Event/MC/MCPreshowerHits"

MCCalorimeterHitVector

7.3.1 Association to Monte Carlo truth

As discussed in detail in reference [6], we have adopted a convention whereby the only navigational links between simulated real data classes and the corresponding Monte Carlo truth information that can appear explicitly in the event data model are pointers going from Raw data ( digitisings ) to the corresponding Monte Carlo hits. Furthermore, it has been decided that simulated raw data classes must inherit from the corresponding real data classes, adding to the real data class a pointer to the Monte Carlo truth information. The name of the derived simulation class is the same as that of the corresponding real data class, prefixed by " MC "

7.4 Raw event

The Raw event sub-tree should contain the raw data collected by the data acquisition and simulated data in the same format (i.e. with detector and electronics response applied). The include files for the contained classes can be found in LHCbEvent/Raw/*.h with obvious names. Currently only the classes RawInnerTrackerMeas and RawOuterTrackerMeas are implemented, which are for the time being copies of the SicB banks WIDG and WODG

Table 7 Raw Event data model

Logical Path
Container Type

"/Event/Raw/RawOuterTrackerMeas"

RawOuterTrackerMeasVector

"/Event/Raw/RawInnerTrackerMeas"

RawInnerTrackerMeasVector

7.5 Reconstructed event

The Reconstructed event sub-tree is meant to contain the output of the reconstruction program. It is currently empty.

7.6 Analysis event

The Analysis event sub-tree should contain the objects created and used during data analysis.The include files for the contained classes can be found in LHCbEvent/Analysis/*.h with obvious names. Currently only the class AxPartCandidate is implemented, derived from the SICB bank AXTK.

Table 8 Analysis Event data model

Logical Path
Container Type

"/Event/Anal/AxPartCandidates"

AxPartCandidateVector

7.7 Utilities

A series of utility classes are defined: