ROOTでのグラフ/ヒストグラム描画

ROOTを使ってヒストグラム、またはグラフを描きたいとなった場合、基本コンソール(ターミナル上)で作業するか、 マクロと呼ばれる簡単なプログラムを書いて行うことになる。ここではROOTでの描画に関わる例をいくつか紹介する。




何らかの関数を描いてみる


ROOTでは数式等を定義して、その関数のグラフを描画することができる。

マクロ、C++でも実装できるが、今回はターミナル上で対話形式でまずやってみる。 まずは、ROOTを立ち上げる。 オプション無しだと、スプラッシュ画面が最初に表示される。うっとおしい場合は-lオプションをつける。

$ root -l
root [0]

1変数の関数はTF1というクラスで実装できる。TFの後の数字は変数の数でTF3まで存在する。

今回はf(x)=x*sin(x)を0 ~ 10πで描いてみる。

root [0] TF1 *sample = new TF1("sample", "x*sin(x)", 0, 10*TMath::Pi())
root [1] sample->Draw()
Info in <TCanvas::MakeDefCanvas>: created default TCanvas with name c1

これで、図1のようなグラフを書くことができた。

root_tf1
図1 ROOTで任意の関数を描いてみる

*sampleはインスタンス名なので、何にしても良いが*はつける。 TF1の引数はTF1(関数名(任意), 関数の定義, xの最小値, xの最大値)となっている。

関数の定義では変数としてxが使え、TF2ではxとyが使用できる。 また、デフォルトではsin,cos,tan,,,などのc++で使える関数はそのまま使うことができ、 ROOTでも複数の関数が使用できる。ROOTの関数、定数を呼び出す場合はTMath::をつけて呼び出す。 ここではTMath::Pi()として、πを呼び出している。

タイトル、x軸のラベル、y軸のラベルを変えたいときは以下のコマンドで変更できる。

root [2] sample->SetTitle("sample;x;y")

->の前のsampleは上で定義したものと同じ名前を使うこと。 SetTitle("グラフのタイトル;x軸のラベル;y軸のラベル")で設定する。 因みに、グラフのx, y軸にカーソルを合わせて右クリックでも変えることができる。