The data format used in the ILCsoft package is the Linear Collider I/O (LCIO) persistency framework and event data model. It provides user interfaces in different programming languages (C ++, Java, Fortran) and is designed to cover all fields of detector research and development. Especially the gap between detector simulation and reconstruction should be closed with a unique data format for both sides.
The interface provided by the library is abstract and hides the actual storing mechanisms from the user. This allows an easy integration into other projects without having to deal with the underlying data model and prevents the user from non-trivial code changes in case the model is altered. This is of special importance since the ILC projects are still under heavy development and implementations are likely to change.
LCIO is an event-based data format. All data belonging to one trigger decision and detector readout is stored together and can be accessed via the corresponding event number. An event consists of the event header and the actual data. The header contains information on the detector, the timestamp, and the run number. The event data is stored in collections of different types. Each type is specific for a certain stage of the pattern recognition chain. While the TrackerRawData (full-frame data) and TrackerData (zero-suppressed data) contain raw detector data, the TrackerPulse collections are used to store the processed clusters. After the track reconstruction procedure thehits and tracks are stored in TrackerHit and Track collections, respectively. Each collection contains specific data entities which are all labeled with a unique hexadecimal ID. These IDs connect the otherwise independent collections and allow easy cross-references, e.g. referencing all pixel hits belonging to a particular cluster. This way a reconstructed track can still contain all information down to the original raw detector data.
Two command line tools are particularly useful for fast inspection of LCIO file contents. The structure and included collections can be obtained using the anajob command. The content of these collections in a single event can be extracted from the LCIO file using the dumpevent command. In this output the correlation of the different data entities can be observed by comparing the corr.Data fields and the entity IDs.