For ROOT Users#
Many previous VHE gamma-ray developers are familiar with the CERN ROOT
library for data processing. ctapipe
is intentionally not ROOT
based, and we do not allow ROOT
or pyroot
as a required dependency
of ctapipe due to its large and complex nature and maintenance
issues. Fortunately nearly all ROOT-like functionality can be found in
the scientific python stack, though the API is of course not the same.
To help developers familiar only with ROOT migrate to the scientific python stack, the following table can be helpful:
ROOT Functionality |
Recommended Python Equivalent |
---|---|
interactive interpreter |
ipython, jupyter notebook |
TH1D,TH2D,TH3D |
numpy.ndarray + numpy.histogramdd() |
TProfile |
numpy.ndarray |
TGraph |
numpy.ndarray + matplotlib plots |
TTree |
astropy.table, pandas, pytables |
ROOT File format (TFile) |
HDF5 (pytables) |
TMinuit |
scipy.optimize or iminuit |
2D/3D graphics |
matplotlib or bokeh |
TMVA |
scikit-learn |
GUI |
various (wxwidgets, Qt,gtk) |
AstroROOT |
astropy.io.fits or fitsio |
ROOFit |
astropy.modelling or lmfit |
Reflex, CINT |
not needed |
TMatrix, etc |
numpy.ndarray + scipy.linalg |
TMatrixTSparse |
scipy.sparse |
TList |
list |
TArray, TObjArray |
list |
TMap, THashList |
dict |
TRandom |
numpy.random + scipy.stats |
Math, MathMore |
numpy + scipy |
Script compilation |
Numba, Cython |
ROOT::Math::VirtualIntegrator |
scipy.integrate |
Access to external C++ code |
cython, ctypes |
– |
astropy.coordinates |
– |
astropy.units |
– |
astropy.time |
– |
astropy.wcs (projections) |
– |
numpy.ndarray (n-dimensional tables) |
– |
scipy.interpolate.interpnd (n-dimensional interpolation) |
– |
scipy.signal (digital signal processing) |