# 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: > from rootable import Rootable Then you can create an instance: > loadFromRoot = Rootable() and load the root file and all the data: > loadFromRoot.loadData('/root-files/slow_pions_2.root') > loadFromRoot.getClusters() > loadFromRoot.genCoordisnate() > 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: > 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: > And finally you can convert the dict into a structured Numpy array by simply writing: > 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 Download the repo, navigate in the terminal to the folder and run the following script: > python3 setup.py