4 ms·
ROOT is very old (older than the first C++ specification) and being able to analyse data interactively and then compile the same for very performance sensitive
by tempay 9y ago
ROOT is very old (older than the first C++ specification) and being able to analyse data interactively and then compile the same for very performance sensitive applications was wonderful.
Unfortunately the previous interpreter (CINT) was a unpredictable mess of hacks with vast code bases dependent upon it. Cling has now taken over for most experiments and is much better.
For interactive work more and more people are using alternatives like python, but C++ and ROOT are deeply ingrained. Almost all data is stored in the ROOT file format and can only be read using ROOT. The library itself supports many common tasks which don’t have mature alternatives. Both of these points are slowly improving and benefiting from the wider data science community but ROOT will continue to be used for decades to come (the LHC experiments will run until at least mid 2030 with data being analysed for many years after).
- MereInterest 9y ago>The library itself supports many common tasks which don’t have mature alternatives. I'd be interested to hear what tasks don't have good alternatives. ROOT can plot histograms, but matplotlib does it much better. ROOT files are a halfway decent file format, but HDF5 is much better. ROOT has a cross-platform socket library, but boost::asio is much better. The main reason I see for ROOT's continued usage is to compensate for the difficulty in adding new dependencies to a C++ project. With ROOT already being used in physics experiments, starting to use another of its submodules is simpler to do than pulling in a better-designed library.
- random_nick_xyz 9y agoWhy ROOT file format is not just a halfway decent file format and why HDF5 is not much better: https://indico.cern.ch/event/567550/contributions/2628878/attachments/1511966/2358123/hep-file-formats.pdf https://indico.cern.ch/event/567550/contributions/2628878/at...
- tempay 9y agoMy biggest problem with ROOT files is the dependency on ROOT, which is tricky to distribute. Though projects like uproot[1] look promising and I think ROOT 7 might improve things. [1] https://github.com/scikit-hep/uproot https://github.com/scikit-hep/uproot
- random_nick_xyz 9y agoAFAIK the ROOT file format was designed to be completely self descriptive. It can be read without ROOT. For instance: https://ep-dep-sft.web.cern.ch/contributed-event/149099 https://ep-dep-sft.web.cern.ch/contributed-event/149099
- tempay 9y ago> ROOT can plot histograms, but matplotlib does it much better. As much as I prefer matplotlib, quickly combining histograms with uncertainties and no regard for formatting is quicker with ROOT. 2D/3D/Profile histograms are also easier to quickly make. > ROOT files are a halfway decent file format, but HDF5 is much better. I believe the ROOT format is more generic and also does a good job of serialising generic objects, but this isn't really my area of expertise. I also find that for all its many (many) faults, RooFit/RooStats doesn't have a generic alternative.
- beojan 9y ago> ROOT files are a halfway decent file format, but HDF5 is much better. I understand your point, but HDF5 isn't better. For one, HDF5 files tend to be considerably larger.