ROOT COMMAND MEMO
ROOTとはcernが出しているオブジェクト指向の解析ソフト


ROOTのインストールログ

ROOTファイルの読み込み

# TFile *f = new TFile("hoge.root");
hoge.rootというファイルを読み込んでいる。

TreeでDraw

# TTree *t1 = (TTree*)f -> Get("t1");
これでまずt1というTreeポインタを得ます。そして
# t1->Draw("Branch_name","条件","plot option"); でプロットできます。条件、プロットオプションは省略出来ます。

TreeでMakeClass

# t1->MakeClass("hoge");
とするとhoge.Cとhoge.hというファイルができる。この二つのファイルを使って便利なことが できる。というのもt1に収められているBranchから新たにBranchをここで作れるって 事。

TreeでAddFriend

Treeで2つのroot fileを一緒のtreeと思って解析できるコマンド。
# t1 -> AddFriend("t2","hogege.root");
としよう。t1に属するBranchとt2に属するBranchを同時に解析できる。ちなみにイベントの数が同じでないと警告が出る。

Treeの結果をHistgramへ

# t1->Draw("E1>>h1");
# TH1D *hnew = (TH1D*)gDirectory->Get("h1");
とするヒストグラムにTreeでプロットした結果が入る。2つ目のコマンドは省略化できる?

Canvas関連

# TCanvas *c1 = new TCanvas("c1","title", x, y, x_size, y_size);
これでCanvasができる。
# c1->Divide(2, 2);
ANAPAWでいうZONEと同じ。
#c1->cd(i);
i番目のPadに移動。
# c1->Clear();
これをしないと勝手に重ねがきをしやがるので注意。PAWに比べてここがかなり使いに くい。

Macroをライブラリ化

巨大なマクロを作成すると処理がとてつもなく遅い。そこでコンパイルしてライブラリ にしてから実行すると、とても早くなる。Treeの処理にとても良いです。コマンドは 以下のとおり
# .L hoge.cc+
最後に+をつけるだけ。ただ、コンパイルをするので今までrootのおかげで なんちゃってで出来ていたことが出来なくなるので気をつけよう。

Treeにいれたstd::vectorの関数を呼ぶ

std::vectorをTreeに入れると便利だが、vectorのサイズを調べる時に
# t1->Draw("hoge.size()");
とやってもエラーが出てしまう。その代わりに
#t1->Draw("hoge@.size()");
とやるとちゃんとsizeがプロット出来る。

Treeにいれたstd::vectorをTTree::Drawでプロットする時の注意点

std::vectorをTreeに入れると便利だが、TTree::Draw()で2次元ヒストグラムを
プロットすると変な相関が見えてしまう事がある。これはなぜかは調べていないが、とりあえず
http://root.cern.ch/root/html/tutorials/tree/hvector.C.html

を参考にヒストグラムにプロットするとちゃんと正しい相関が見える。



BACK