Skip to content

Alternatives to ROOT #27

@coreyjadams

Description

@coreyjadams

IMO, ROOT is a dependency that is somewhat of a limitation for larcv2. I think it would be nice to be able to deploy larcv without needing to (potentially) build ROOT on a system, say for example a student's laptop.

There are two places ROOT is used in larcv2, and they are independent I think.

  1. Root is used to generate python bindings for C++ code.
  2. Root is used to produce binary files for data persistence.

I think to address (1) there are several solutions available. The one I thought of first is boost.python, though that is not the only option. Cython also offers intriguing options, and in fact many options exist: https://wiki.python.org/moin/IntegratingPythonWithOtherLanguages.

For (2) I think hdf5 is an obvious choice for a broadly used data format. It also has the advantage of being an industry standard in a lot of ways. I have seen other software using hdf5 format that has larger file sizes compared to ROOT for the same data, though I think PyTables offers a better compression to deal with that: https://www.pytables.org/FAQ.html

In summary, probably the easiest path to replacing ROOT would be a combination of Cython and PyTables.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions