Thank you for the interest in "Pre-conditioners applied to ROOT compression algorithms" project! As this project is a bit technical, it is necessary to have some understanding of ROOT file formats before starting to write proposal. This document is dedicated to give you an introduction of ROOT file formats, which you can try out.
git clone https://github.com/root-project/root
mkdir root-build
cd root-build
cmake ../root -Droot7=ON -Dtesting=ON
make -j4
After building ROOT, check that it works (please be sure you are still in root-build
directory):
source bin/thisroot.sh
root.exe
You should see ROOT command line (powered by ROOT interpreter). Try to play with it!
Before starting your exercise, please check documentation for:
- TFile: https://root.cern.ch/doc/master/classTFile.html;
- TTree: https://root.cern.ch/doc/master/classTTree.html;
- RNTuple: https://root.cern.ch/doc/master/md_tree_ntuple_v7_doc_README.html, https://root.cern/doc/master/classROOT_1_1Experimental_1_1RNTuple.html, https://root.cern/doc/master/classROOT_1_1Experimental_1_1Detail_1_1RNTuple.html;
Please try to add Google Test (GTests) unit tests:
- for TTree, testing different compression algorithms (https://github.com/root-project/root/tree/master/tree/tree/test)
or - for RNTuple, testing different compression algorithms (https://github.com/root-project/root/blob/master/tree/ntuple/v7/test/ntuple.cxx)
To pass evaluation it is enough to start with TTree unit test (first option), but if you are curious or can't stop please go ahead with RNTuple (we encourage you!).
Steps:
- Create TTree.cxx file in tree/tree/test/ directory;
- Add it to CMake build system (get inspiration here: https://github.com/root-project/root/blob/master/tree/tree/test/CMakeLists.txt#L22);
- Create a new ROOT file using TFile class with Tree populated by random data. Get inspiration here: https://github.com/root-project/root/blob/master/tree/tree/test/TTreeClusterTest.cxx#L10
- Add unit test checking default compression settings used for generated file (TFile) (by default, without explicitly saying which compression algorithm you want to use, the default compression setting used in TFile constructor will be equal to integer value "101"). Get instpiration here: https://github.com/root-project/root/blob/master/tree/tree/test/TTreeClusterTest.cxx#L43
Use binary comparison [https://github.com/google/googletest/blob/master/googletest/docs/primer.md#binary-comparison] of the values of expected compression algorithm's settings "101" and for setting used in generated TFile (e.g. auto compress = file->GetCompressionSettings();
).
IMPORTANT! Please don't hesitate to contact us with any questions! We understand that it could be very complex/confusing from the begining so we are happy to reply to any of your questions!
Contact (put all of us in CC please):