概要
データ解析ツールであるROOTを使ってみました。結構便利なので、インストールから簡単なデモまでを備忘録をかねて書いていきます。ROOTはpythoやC++に対応していますが、ここではC++を使います。ちなみにOSはmacです。
インストール
ROOTは https://root.cern.ch/downloading-root からinstallできます。最新のproduct版を選んで、バイナリで落としてください。落としたファイルを好きなディレクトリに置いて、パスを通せば終了です。僕の場合はホームディレクトリの.bash_profileに
source /usr/local/root6/bin/thisroot.sh
と記述しています。(落としたファイルをroot6という名前に変更しています)
動作確認
terminal上で
$ root
とうてばROOTのロゴが表示された後に次のような画面になるはずです。
こうなれば正常に動作しています。
毎回ロゴが出るのはうっとおしいので消しておきます。
ホームディレクトリ上の.bashrcに
alias root='root -l'
と記述しておけば、自動でロゴが消えます。
ちなみに.bashrcがなければ、自分で作ってしまって、.bash_profileで
source ~/.bashrc
としておけば大丈夫です。
ROOTの扱い方
先ほどのようにrootコマンドを打つとROOTが起動します。そのコンソール上でROOTを操作していく形になります。以下にそのコマンドを何個か書いていきます。
.q
これはROOTのコンソール場から抜ける命令です。
.x hoge.cpp
hoge.cppというマクロファイルを実行しろという命令です。
なんとこの二つだけでだいたいどうにかなります!!!!!!(多分)
マクロの記述
C++のコード内にROOTコマンドを記述しておき、.xコマンドで実行できます。
例えば以下のようなコードをかき、実行すると図のようなヒストグラムが描画されます
//////////this code is to draw histgram ////////////
int sample(){
gROOT -> Reset();
int tem;
int i=0;
int data[30] = {0,1,1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,5,5,5,6,6,6,6,6,7,7,8,9,10};
TH1S *h1 = new TH1S("Myhist","Scattering Angle",10,0,10);
while(i<30){
h1 -> Fill(data[i]);
i++;
}
h1 -> Draw();
h1 -> SetTitle("Myhist");
h1 -> GetXaxis()-> SetTitle("value");
h1 -> GetYaxis()-> SetTitle("frequency");
return 0;
}
コードの解説をしていきます。
gROOT -> Reset();
描画のために用意してある変数(axisの名前やグラフのタイトル)をリセットしてくれるコマンドです。これをしないとめちゃめちゃなことになる可能性があるので入れるのがベターです。
TH1S *h1 = new TH1S("Myhist","Scattering Angle",10,0,10);
TH1Sクラスのh1インスタンスを生成します。TH1Sクラスは1次元ヒストグラムのクラスです。引数は
第1引数 : 名前
第2引数 : タイトル
第3引数 : 範囲の分割数(binの数)
第4引数 : 範囲の最小値
第5引数 : 範囲の最大値
この例で言えば、0~10を10分割している感じです。
h1 -> Fill(data[i]);
h1というインスタンスにdata[i]を入れてくれます。自動で数値の大小関係を評価して、当てはまるbinの度数を1増やしてくれます。
h1 -> Draw();
h1インスタンスを描いてくれます。Draw()のなかにアルファベットを入れることでオプションを使うこともできます。2つのグラフを同時に描画したりする際はこのオプションを使うと良いです。
h1 -> GetXaxis()-> SetTitle("value");
軸に名前をつけます。
終わりに
以上でざっくりとした説明は終わりです。
これらが理解できていればあとは公式のドキュメントを読めば
一人でかけるようになると思います。