...
The following list summarizes some of the requirements/desires from these documents.
- Support direct (random) access to events or other records in LCIO files
- Ideally we could also (eventually) support access based on criteria, i.e. events with Emiss>100
- Efficient access to sub-parts of event.
- 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.
- Ideally this would be totally transparent to the user, especially when reading the file.
- 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.
- Ability to distribute data over several files. This could be useful to:
- Append multiple files together to form a single large "logical" file
- To allow data to be added to an existing file. E.g.
- Do reconstruction and add the reconstruction output to the file without changing the input file
- Allow users to add extra information to the file
- More efficient way to store user defined data E.g.
- Using LCIO in testbeam DAQ requires very fast IO
- LCGenericObject is not very user friendly.
Some consequences that follow from these requirements
- Currently the mapping between blockname and blocktype is stored only in the EventHeader. This makes it hard to add additional information into the event. Frank proposes storing BlockName#Blocktype where we currently store blockname.
- Currently SIO pointers can only point within the same block. We need the ability for pointers to point between blocks or even files.