Add support for DST summary trees
[UNDER CONSTRUCTION]
Overview
In the oscillation analysis context, I'm trying to provide a workflow that only depends on official KM3NeT packages and data-format.
The dst trees (reduced offline files + additional variables) provide a good solution, however none of the additional variables are currently available inside km3io, limiting the usage of this data format.
DST format
DST files are basically offline files in which you've removed all tracks excepts the best, remove all the hits etc ...
In this sense, all the information available in the offline file in the E
tree and contained in the Evt
container are available.
In addition to that, a friend tree T
is produced while creating the dst file. It has the same shape, and contains multiple custom struct branches, like one containing the summary information for the tracks, another for the hits etc ...
An example of such a file can be found here : /sps/km3net/users/heijboer/dstprod/v6_data/datav5.40.ALL.dst.root
In the context of the oscillation analysis, I would like add one or multiple additional structures to handle the additional variables required for the oscillation neutrino selection.
Thoughts & Open questions
- The second tree,
T
, is directly accessible fromE
, as it is append to E with theTTree::AddFriend()
method. Is the friend Tree concept something that translate through uproot ? - The DST also used some aliasing features from
TTree
, with for example these two definitions :
deepAlias(E, ROOT.Trk, "trackfit", "trks[0]")
deepAlias(E, ROOT.Trk, "showerfit", "trks[1]")
(deepAlias is basically looping over all the sub member of the class, e.g. trks[0].E
becomes trackfit.E
. I don't know if this behavior is something also translatable in uproot.