The following figure presents an overview over the C++ classes of the CTA module and their relations.
The CTA module provides an instrument interface for Imaging Air Cherenkov Telescopes (IACT). The interface currently supports the event list data format developed in the context of the Cherenkov Telescope Array (CTA) project and provides support for various instrument response formats that are currently used in the CTA consortium or that are under study. The interface provides support for unbinned and binned maximum likelihood analysis, and implements Monte Carlo simulations of high-level data based on the instrumental response functions.
Two types of observations are implemented so far: GCTAObservation that derives from GObservation and that describes either a binned or unbinned data set, and GCTAOnOffObservation that describes an On-Off observation used in classical Cherenkov Telescope data analysis. Binned or unbinned observations are collected in the GObservations container class, while the On-Off observations are collected in a specific GCTAOnOffObservations container class (note that the GCTAOnOffObservations container may vanish in the future when GCTAOnOffObservation objects will also be collected by the GObservations container class).
The data of binned observations are stored by the GCTAEventCube class. The GCTAEventCube class holds the binned event data in form of a sky map, implemented by the GSkyMap class. The sky coordinates of all sky map pixels are stored in an array of CTA instrument directions, implemented by the GCTAInstDir class which holds a single GSkyDir object. The mean energies of the event cube are stored in an array of GEnergy objects, and the mean time is stored by a GTime object. The GCTAEventCube class holds in fact only a single event bin, implemented by the GCTAEventBin class. When the event bin is accessed using the GCTAEventCube::operator[]() operator, the operator updates references to the event cube data so that the GCTAEventBin object represents the selected event bin. This allows a memory-efficient storage of event bin information (without storing for example the instrument direction or the energy for each bin), while preserving the abstract data model where an event cube of abstract type GEventCube is composed of event bins of abstract type GEventBin (see Observation handling).
The data of unbinned observations are stored by the GCTAEventList class. The GCTAEventList class is a container of GCTAEventAtom objects that represent individual events. Each event is composed of a GCTAInstDir object, a GEnergy object and a GTime object. The region of interest covered by an event list is described by the GCTARoi class that derives from the abstract GRoi class.
In addition to the event, GCTAObservation holds pointing information implemented by the GCTAPointing class. GCTAObservation holds furthermore response information. Response information derives from the abstract GCTAResponse class that is impleted either as a factorized Instrument Response Function by GCTAResponseIrf or as a precomputed response for stacked analysis by GCTAResponseCube. For stacked analysis the response is composed of the exposure (implemented by GCTACubeExposure), the livetime averaged point spread function (implemented by GCTACubePsf) and the livetime averaged background rate (implemented by GCTACubeBackground). For all other analysis, the factorized IRFs are used directly. Dependent on the response format, the components of the factorization are stored in classes that derive from the abstract GCTAAeff, GCTAPsf, GCTAEdisp, and GCTABackground classes (see Handling the instrument response for more details on the response implementation).
Different models of the instrumental background are provided by the GCTAModelIrfBackground, GCTAModelCubeBackground, and GCTAModelRadialAcceptance classes. All these classes implement the abstract GModelData base class. GCTAModelIrfBackground and GCTAModelCubeBackground will use the background rate information that is attached to the response function for background modelling. Specifically, GCTAModelIrfBackground will use information provided by GCTABackground and GCTAModelCubeBackground will use information provided by GCTACubeBackground (see Modelling CTA background for details on the background model implementation).