Frank has presented some ideas on enhancing LCIO, and Tony has an older document discussing Adding support for Random Access to LCIO files.

The current LCIO file format is documented here. The SIO format is documented here.

The following list summarizes some of the requirements/desires from these documents.

  1. Support direct (random) access to events or other records in LCIO files
    1. Ideally we could also (eventually) support access based on criteria, i.e. events with Emiss>100
  2. Efficient access to sub-parts of event.
    1. i.e we should be able to read an LCIO file and if only interested in reconstructed particle read only those blocks from the file.
      1. Ideally this would be totally transparent to the user, especially when reading the file.
  3. Ability to distribute data over several files. This could be useful to:
    1. Append multiple files together to form a single large "logical" file
    2. To allow data to be added to an existing file. E.g.
      1. Do reconstruction and add the reconstruction output to the file without changing the input file
      2. Allow users to add extra information to the file
  4. More efficient way to store user defined data E.g.
    1. Using LCIO in testbeam DAQ requires very fast IO
    2. LCGenericObject is not very user friendly.

Some consequences that follow from these requirements