root
Table of Contents
1 マクロに引数を渡す
引数持ちのマクロを実行するには
$ root 'macro.cc(argument)'
のようにシングルクオーテーションをつけてシェルで実行するか、もしくは
$ root root[] .x macro(argument)
のようにrootのコマンドラインで実行する
2 rootで用意されている関数
TMath::Gaus(x, maen, sigma) TMath::Poisson(x, mean)
x : 確率変数
3 SetNpx
関数を描画する際、なめらかな曲線にならないことがある。
これは描画する点数の問題で、以下のように点数を指定することができる。
root[] TF1 *f = new TF1("f", "TMath::Gaus(x, 0, 0.05)", -1, 1) root[] f->Draw()
とすると
となり、少し荒い。
ここで、描画点数を増やす(デフォルトは100らしい)と、
root[] f->SetNpx(10000) root[] f->Draw()
となって、多少綺麗になっているのがわかる。
この例ではありがたみがあまり感じられないが、以下のようなことがあって驚いた。
Npx = 100
Npx = 1000
4 イベント数を数える
ヒストグラムのある範囲からある範囲までのイベント数を数える
root[] hist->Integral(minbin, maxbin)
このやり方だとbin番号を教えなければならない
横軸の範囲で指定したければ
root[] hist->Integral(hist->GetXaxis()->FindBin(min), hist->GetXaxis()->FindBin(max))
5 横軸を好きな次元に変換する
TGaxisを使う(参照:HongoWiki)
ADCの横軸をchからNPEに変換したかった
サンプルコード
<transNPE.cc>
int transNPE(const char *hname, int ped, int ChToNPE){ TH1 *h = (TH1*)gROOT->FindObject(hname); h->GetXaxis()->SetTickLength(0); h->GetXaxis()->SetLabelOffset(999); h->Draw(); int MinNPE = 0; int MaxNPE = (4096-ped)/ChToNPE; int MinCh = ped; int MaxCh = ped + NpeToCh*MaxNPE; TGaxis *tgaxis = new TGaxis(MinCh, 0, MaxCh, 0, MinNPE, MaxNPE, 510, "", 0); tgaxis->SetTitle("NPE"); tgaxis->Draw(); return 0; }