Kanga++ Technical Overview
eac-041122: This overview was written on Mon. Nov 22, 2004, almost a full year after the implemenation of Kanga.
The original version written before the implemenation is here.
Kanga++ Technical Goals
Kanga++ was designed to solve several technical problems we encounterd with previous data storage formats. To summarize we wanted to be able to:
- Permit direct access to the persistent data stored in a ROOT file.
- Allow users navigate easily between data stored locations. This could mean different branches, trees or files.
- Make it simple to add "User" information to the official store.
- Make it possible to split data by analysis stream or detector component.
Kanga++: Storing Data Objects and References.
The basic ideas behind these design prinicples are fairly simple.
- To permit direct access to the persistent data, we seperated out each of the unpacking functions used in reading the data, so that they can be called directly by the user.
- To allow users to navigate between data stored in different locations we defined a way of storing and "de-referencing" pointers persistently.
- We took advantage of the fact that Kanga++ data are stored on TTrees to give the user access to the TTree itself and let them add their own data.
- In order to be able to split the data by analysis stream or detector component, we insured that persistent references are valid across TTrees and even across files.
Eric Charles
Last modified: Wed Nov 24 11:50:49 PST 2004