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()

とすると
Npx_eg1_100.png
となり、少し荒い。

ここで、描画点数を増やす(デフォルトは100らしい)と、

root[] f->SetNpx(10000)
root[] f->Draw()

Npx_eg1_10000.png
となって、多少綺麗になっているのがわかる。

この例ではありがたみがあまり感じられないが、以下のようなことがあって驚いた。

Npx = 100
Npx_eg2_100.png
Npx = 1000
Npx_eg2_1000.png


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;
}

Author: Takeshi Harada

Created: 2019-10-28 Mon 23:09

Emacs 26.2 (Org mode 9.2.5)

Validate