ROOTの使い方
ROOTは高エネルギー物理学分野で広く使われている解析フレームワークです。
スイスにあるCERNを中心に開発されています。
解析フレームワークと聞くと敷居が高そうに感じますが 「お絵かきソフトだ」と気軽に捉えて使えばよいと思っています。 もちろん、自由に絵を描くソフトとは異なり、 自分が測定したデータを使ってヒストグラムやグラフを描くことが中心になります。
警告
このドキュメントの大部分はROOT5のときの使い方で書かれたものです。
少しずつROOT6に合った使い方に書き換えていこうと考えていますが、時間がかかりそうです。
うまく動かない箇所は、各自でROOT6の使い方を調べてください。
環境構築したい
ROOTをインストールして、開発環境を準備する方法を説明します。
学習リソース
ROOTの使い方を効率的に学ぶには、公式のチュートリアルとサンプルコードを活用しましょう。 実際にコードを動かしながら学ぶことで、ドキュメント読解だけより習得が早くなります。
- ROOT公式チュートリアル
付属のサンプルコードの説明です。 実際にコードを動かし、ソースを読むほうが早く身につきます。 はじめて使うクラスなどはとりあえずサンプルを動かしてみましょう。
- ROOT Primer
はじめての方向けの総合的なガイドです。 ROOTの基本的な使い方から応用的な技法まで、体系的に学べます。
対話モードしたい
ROOTの対話型シェル(Rint)を使って、コンパイルなしにC++コードを実行できます。
ROOT6ではバックエンドのC++インタプリターがCINTからClingに変更され、より詳細なエラーメッセージと高度なC++規格への対応が実現されました。
データ操作したい
ROOTでのデータ処理の中核です。様々なデータ源からROOTのデータ構造に変換し、フィルタリングや統計処理を行います。
TTree・TChain・RNTuple
TTreeはROOTのデータ構造の基本です。
CSVなどのテキスト形式で取得したデータをすぐにTTreeに変換しておくと、ROOTを使ったデータ解析が捗ります。
複数のTTreeを読み込む場合はTChainクラスが便利です。
RDataFrame
ROOT6で導入された高性能なデータフレーム処理フレームワークです。 関数型プログラミングスタイルでデータ解析が可能で、複数コアでの並列処理に対応しています。
ファイル操作したい
データファイルの読み書きや文字列処理を行います。
描画したい
ヒストグラム、グラフ、キャンバスなどの可視化機能を使い、データを図表として表現します。
関数・フィット
1次元ヒストグラムをフィットするための関数定義とフィット機能を提供します。
- フィット関数を定義したい(
TF1) - フィット関数を描画したい(
TF1::Draw) - フィット結果を取得したい(
TF1::GetParameter) - カイ二乗値したい(
TF1::GetChiSquare) - 初期パラメーターを設定したい(
TF1::SetParameter) - 初期パラメーターを固定したい(
TF1::FixParameter) - ガウス関数でフィットしたい(
TF1::Fitwith"gaus") - 多項式でフィットしたい(
TF1with"pol") - クリスタルボール関数でフィットしたい(
TF1with"crystalball") - フィット関数を積分したい(
TF1::Integral) - フィット関数の導関数を求めたい(
TF1::Derivative)
1次元ヒストグラム
- 1次元ヒストグラムを作りたい(
TH1) - タイトルと軸ラベルを変更したい(
SetTitle、SetXTitle) - データを入力したい(
TH1::Fill) - 積分値を計算したい(
TH1::Integral) - ノーマライズしたい(
TH1::Scale) - 統計情報したい(
TH1::SetStats) - 平均値したい(
TH1::GetMean) - RMSしたい(
TH1::GetRMS) - エラーを追加したい(
TH1::SetBinContent/TH1::SetBinError) - 重み付きデータのエラーしたい(
TH1::Sumw2) - ヒストグラムをフィットしたい(
TH1::Fit) - ヒストグラムを描画したい(
TH1::Draw)
2次元ヒストグラム
グラフ
キャンバス・レイアウト
凡例
設定・カスタマイズしたい
表示方法や画面の設定を一括変更する場合は TROOTクラス 、 TStyleクラス 、 TSystem を使います。
実際に使用するのは gROOT 、 gStyle 、 gSystem というグローバル変数です。
その他の話題
リファレンス
このKumaROOTに載っているROOTの情報は、下記のサイトを参考にしています。 だいたい自分で試してみて使い方を理解したもの載せています。 本当に詳しいことは下記の情報を自分で読んでみるのが一番だと思います。
- ROOT公式マニュアル
困ったらとりあえず読みましょう! Basics or Functional partsから自分の目的に合ったドキュメントを探しましょう。 とてーも長いので全部読もうとしてはいけません。 必要な時に、必要は箇所を、必要なだけ読むことが大切です。 あと、これを書いているときに気づいたのですが、 はじめての方はROOT Primerにも目を通してみると良いかもしれません。
- ROOT公式リファレンスガイド
クラス名やそのメソッド名、内容、使い方を知りたい場合に使いましょう! といっても、このページから辿らなくても「
cern root ttree」とググればだいたいヒットします。 検索では「cern」と付けるのが重要です。 でないと、管理者の意味の「root」がたくさんヒットしてしまいます。 リファレンスガイドは「クラスの説明+メソッド一覧」という構成になっています。 最初は読むのに苦労するかもしれませんが、使いこなせるように頑張りましょう。 自分のやりたい情報が得られるようになれば、もうROOT中級者です。- ROOT公式チュートリアル
付属のサンプルコードの説明です。 ドキュメントやリファレンスを読むより、 実際にコードを動かし、ソースを読むほうが早く身につきます。 はじめて使うクラスなどはとりあえずサンプルを動かしてみましょう。
- ROOT公式コーディングガイド
ROOTのソースコードを読むときに役に立つと思います。 なんとなく知っておくと良いです。 覚える必要はまったくありません。
- ROOT解体新書
gROOTやgStyleの設定がすごく詳しいサイトです。 他のページでは見られない項目がすごく詳しいです。 残念ながらページのリンク切れを確認(2015-01-27)- 宇宙線実験の覚え書き(大学院生版)
PyROOTのことがたくさん載っているoxonさんのブログです。 現在は宇宙線実験の覚え書き(社会人版) に引っ越しされたみたいです。