LoginSignup
5
3

More than 3 years have passed since last update.

データ解析ツールROOT入門

Posted at

概要

データ解析ツールであるROOTを使ってみました。結構便利なので、インストールから簡単なデモまでを備忘録をかねて書いていきます。ROOTはpythoやC++に対応していますが、ここではC++を使います。ちなみにOSはmacです。

インストール

ROOTは https://root.cern.ch/downloading-root からinstallできます。最新のproduct版を選んで、バイナリで落としてください。落としたファイルを好きなディレクトリに置いて、パスを通せば終了です。僕の場合はホームディレクトリの.bash_profileに

.bash_profile
source /usr/local/root6/bin/thisroot.sh

と記述しています。(落としたファイルをroot6という名前に変更しています)

動作確認

terminal上で

terminal
$ root

とうてばROOTのロゴが表示された後に次のような画面になるはずです。
こうなれば正常に動作しています。
image.png


毎回ロゴが出るのはうっとおしいので消しておきます。
ホームディレクトリ上の.bashrcに

.bashrc
alias root='root -l'

と記述しておけば、自動でロゴが消えます。

ちなみに.bashrcがなければ、自分で作ってしまって、.bash_profileで

.bash_profile
source ~/.bashrc

としておけば大丈夫です。

ROOTの扱い方

先ほどのようにrootコマンドを打つとROOTが起動します。そのコンソール上でROOTを操作していく形になります。以下にそのコマンドを何個か書いていきます。

.q

これはROOTのコンソール場から抜ける命令です。

.x hoge.cpp

hoge.cppというマクロファイルを実行しろという命令です。



なんとこの二つだけでだいたいどうにかなります!!!!!!(多分)

マクロの記述

C++のコード内にROOTコマンドを記述しておき、.xコマンドで実行できます。
例えば以下のようなコードをかき、実行すると図のようなヒストグラムが描画されます

sample.cpp
//////////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;
}

image.png

コードの解説をしていきます。

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");

軸に名前をつけます。

終わりに

以上でざっくりとした説明は終わりです。
これらが理解できていればあとは公式のドキュメントを読めば
一人でかけるようになると思います。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3