# What is this tool? Let's all be frank, root sucks and the root file format is horrible. It's among humanities worst pieces of software. With this small tool I hope to fix the damage that was done, at least a little, by converting root files into native Python formats. It's using [Numpy](https://numpy.org) and a library called [Uproot](https://github.com/scikit-hep/uproot5) to read and process these damn root files. So far it is specialist for one task and I will have to work on it to make it actually viable for more use cases. That task is to extract PXD data from Belle 2 data files. ## How to use this? This is a single class, that needs to be instantiated, it doesn't take any arguments. Just import it like this: ```python from rootable import Rootable ``` Then you can create an instance: ```python loadFromRoot = Rootable() ``` and load the root file and all the data: ```python loadFromRoot.loadData('/root-files/slow_pions_2.root') loadFromRoot.getClusters() loadFromRoot.getCoordisnate() loadFromRoot.getLayers() loadFromRoot.getMatrices() loadFromRoot.getMCData() ``` This commands don't have any return value, but instead work in-place. Then all data is stored inside the object as dict: ```python loadFromRoot.data ``` Here follows a list of keywords contained in the dict: - cluster data: - 'eventNumbers' - 'clsCharge' - 'seedCharge' - 'clsSize' - 'uSize' - 'vSize' - 'uPosition' - 'vPosition' - 'sensorID' - coordinates: - 'xPosition' - 'yPosition' - 'zPosition' - layers: - 'layers' - 'ladder' - matrices: - 'cluster' - Monte Carlo data: - 'momentumX' - 'momentumY' - 'momentumZ' - 'pdg' - 'clsNumber' Since the class is subscriptable one can access every element directly using the keywords like this: ```python loadFromRoot['eventNumber'] ``` or ```python loadFromRoot[0] ``` will return either the array containing the event numbers of the first entry of every array contained in the classes dict. And finally you can convert the dict into a structured Numpy array by simply writing: ```python loadFromRoot.loadFromRoot() ``` This last command returns a Numpy array. From there the user can save it using Numpys build-in functions, convert it to Pandas or use it in any way that is compatible with Numpy. ## Installation You will need to the [wheel](https://pypi.org/project/wheel/) and [setuptools](https://pypi.org/project/setuptools/) packages of python in order to install Download the repo, navigate in the terminal to the folder and run the following script: ```bash python3 setup.py bdist_wheel sdist ``` and then: ```bash pip3 install . ```