ROOTはCERNによって開発されたオブジェクト指向のコンピュータプログラムおよびライブラリです。元々は素粒子物理学のデータ解析用に設計され、その分野特有の機能をいくつか備えていますが、天文学やデータマイニングなどの他のアプリケーションでも使用されています。最新のマイナーリリースは2025年4月8日時点で6.34です。[ 3 ]
CERN は長年、FORTRANで書かれたCERN プログラム ライブラリを維持してきました。その開発とメンテナンスは、 C++プログラミング言語で書かれた ROOT を優先して 2003 年に中止されました。ROOT の開発は、1994 年に René Brun と Fons Rademakers によって開始されました。一部はGNU Lesser General Public License (LGPL) の下で公開され、その他はGNU General Public License (GPL) ソフトウェアに基づいているため、GPL の条件の下でも公開されています。抽象レイヤーを使用して、コンピュータのグラフィックス サブシステムとオペレーティングシステムへのプラットフォームに依存しないアクセスを提供します。抽象プラットフォームの一部は、グラフィカル ユーザー インターフェイスとGUI ビルダー、コンテナ クラス、リフレクション、C++スクリプトとコマンドラインインタプリタ(バージョン 5 ではCINT 、バージョン 6 ではcling )、オブジェクトのシリアル化と永続化です。
ROOTが提供するパッケージには、以下のものが含まれます。

ROOTの重要な機能の一つは、ツリーと呼ばれるデータコンテナであり、そのサブ構造としてブランチとリーフがあります。ツリーは、ファイルに格納された生データへのスライド式ウィンドウと考えることができます。ツリー内のインデックスを進めることで、ファイル内の次のエントリのデータを取得できます。これにより、オブジェクト作成に伴うメモリ割り当ての問題を回避し、バッファリングを意識させずに処理しながら、ツリーを軽量コンテナとして機能させることができます。
ROOTは、年間数ペタバイトと推定される大型ハドロン衝突型加速器の実験データを処理する必要があり、高い計算効率を実現するように設計されている。 2009年現在ROOTは主に素粒子物理学(高エネルギー物理学)実験におけるデータ解析とデータ取得に使用され、現在ではこれらの分野における実験的なプロットと結果は、ROOTを使用して取得されます。
C++ インタープリタ (バージョン 5.34 まではCINT 、バージョン 6.00 以降は Cling) が含まれているため、このパッケージは非常に汎用性が高く、 MATLABなどの商用製品と同様に、対話型、スクリプト型、コンパイル型のモードで使用できます。
2012年7月4日、ATLAS実験とCMS実験は、LHCにおける標準模型ヒッグス粒子の探索状況を発表しました。この日に発表されたすべてのデータプロットにはROOTが使用されました。
いくつかの素粒子物理学の共同研究グループは、ROOTをベースにしたソフトウェアを作成しており、多くの場合、より汎用的なソリューション(例えば、STLの代わりにROOTコンテナを使用するなど)を採用している。
ROOT に対する批判としては、初心者にとっての難しさや、設計と実装のさまざまな側面が挙げられます。よくある不満の原因としては、極端なコードの肥大化、グローバル変数の多用[ 4 ]、過度に複雑なクラス階層などがあります。これらの問題は、ROOT ユーザーのメーリングリストで時々議論されています。[ 5 ] [ 6 ] ROOT に不満を持つ科学者は、過去にその欠点を回避することに成功しましたが[ 7 ] 、いくつかの欠点は ROOT チームによって定期的に対処されています。たとえば、CINT インタープリタは Cling インタープリタに置き換えられており[ 8 ]、多数のバグがリリースごとに修正されています。