CTAPipe Data Model

The DL1 files are HDF5 format files, with the following data set hierarchy. The tables should be written with pytables (not h5py), ideally with the HDF5TableWriter, which ensures the unit and other descriptive metadata are attached to the output. Containers marked with a + should be written without their prefix (all others should use column prefixes).

The following describes the contents of data level 1 (DL1) output files generated by ctapipe (e.g. the ctapipe-process tool which uses the DataWriter component to generate output data).

DL1 Data Model

This describes data that change per-event. The following datasets will be written to the group /dl1/event/ in the output file:





event-wise data pertaining to a subarray



subarray trigger information

EventIndexContainer +, TriggerContainer


Per-telescope Per-event information



tables of image parameters (one per telescope)

TelEventIndexContainer +, ImageParametersContainer


tables of telescope images (one per telescope)

TelEventIndexContainer +, DL1CameraContainer

DL2 Data Model

This describes data that change per-event. The following datasets will be written to the group /dl2/event/stereo/<algorithm>/ and or /dl2/event/mono/<algorithm>/, one for each reconstruction algorithm in the output file, where <algorithm> is the identifier of the algorithm (e.g. “Hillas”):





shower geometry reconstruction

EventIndexContainer, ReconstructedGeometryContainer


shower energy reconstruction

EventIndexContainer, ReconstructedEnergyContainer


shower classification parameters

EventIndexContainer, ParticleClassificationContainer

Simulation Data Model

Configuration Data Model

The output file should also contain serializations of the instrument, observation (if applicable), simulation (if applicable) configuration information, written to the /configuration group:





Serialized ctapipe.instrument.SubarrayDescription, using ctapipe.instrument.SubarrayDescription.to_hdf()



Subarray layout info

result of SubarrayDescription.to_table() output as HDF5 using astropy.table functionality


telescope optics information

result of SubarrayDescription.to_table(kind='optics') output as HDF5 using astropy.table functionality


camera geometry information

result of CameraGeometry.to_table() output as HDF5 using astropy.table functionality


Monte-Carlo simulation configuration information



Monte-Carlo simulation run information


Core Provenance

The root group of the file shall contain all of the “CTA Core Provenance Metadata” headers as user attributes, with the hierarchy flattened and separated by spaces (e.g. "CTA ACTIVITY NAME" = "ctapipe-process").