ROOTのGUIの簡単な使い方

# 概要

[ROOT](https://root.cern) の GUI は使い勝手がよいものの、その使い方がイマイチわからないことが多い。ここでは下記の内容について簡単に紹介してみます。

## サンプルファイルの作成

https://root.cern/doc/master/tree1_8C_source.html

で生成される `tree1.root` を用いて説明します。root がインストールされてる環境下で、

> root -l                                                                   
  root [0] .x tree1.C

で実行すれば  `tree1.root` が生成されます。

`tree1.C` と `tree1.root` は下記からも取れるように置いてあります。


https://drive.google.com/file/d/15JB0Kq0Fhkou0f2-eEdWX-zQdhreVefC/view?usp=sharing

https://drive.google.com/file/d/1x4-jX-mD9AFIj7WBHzX55a39Z94UVERs/view?usp=sharing




# ROOT の GUI の基本的な使い方

## ROOTファイルの開き方 root –l ROOTファイル

`root  -l ファイル名.root ` 
もしくは、
`TFile *f1 = TFile::Open("run0222.root")`
でファイルを開く。

.ls で中身を確認できる。

``` bash:
$ root -l tree1.root                                                        root [0] 
Attaching file tree1.root as _file0...
(TFile *) 0x7fa5d75ddc90
root [1] .ls
TFile**		tree1.root	
 TFile*		tree1.root	
  KEY: TTree	t1;1	a simple Tree with simple variables
```

`TTreeのオブジェクト名->Print()` で TTree の中身をプリントできる。このファイルの場合、TTreeのオブジェクト名は t1 なので、`t1->Print()` で中身がわかる。

``` bash:
root [4] t1->Print()
******************************************************************************
*Tree    :t1        : a simple Tree with simple variables                    *
*Entries :    10000 : Total =          243567 bytes  File  Size =     180826 *
*        :          : Tree compression factor =   1.34                       *
******************************************************************************
*Br    0 :px        : px/F                                                   *
*Entries :    10000 : Total  Size=      40607 bytes  File Size  =      37333 *
*Baskets :        2 : Basket Size=      32000 bytes  Compression=   1.08     *
*............................................................................*
*Br    1 :py        : py/F                                                   *
*Entries :    10000 : Total  Size=      40607 bytes  File Size  =      37310 *
*Baskets :        2 : Basket Size=      32000 bytes  Compression=   1.08     *
*............................................................................*
*Br    2 :pz        : pz/F                                                   *
*Entries :    10000 : Total  Size=      40607 bytes  File Size  =      36663 *
*Baskets :        2 : Basket Size=      32000 bytes  Compression=   1.09     *
*............................................................................*
*Br    3 :random    : random/D                                               *
*Entries :    10000 : Total  Size=      80710 bytes  File Size  =      54555 *
*Baskets :        3 : Basket Size=      32000 bytes  Compression=   1.47     *
*............................................................................*
*Br    4 :ev        : ev/I                                                   *
*Entries :    10000 : Total  Size=      40607 bytes  File Size  =      14155 *
*Baskets :        2 : Basket Size=      32000 bytes  Compression=   2.84     *
*............................................................................*
```


## Tree からの 1D ヒストグラムの書き方

Tree から最も簡単に 1D ヒストグラムを書くためには、

``` c:
root [N] t1->Draw("px") 
```

だけでよい。ただし、これは自動で適当にビンまとめしたヒストグラムである。

明示的にビン数と範囲を指定したい場合は、

``` c:
root [N] t1->Draw("px>>h(1000,-10,10)") 
```

とすると、`h(ビン数、下限値、上限値)` の一次元のヒストグラムを作成してくれる。

![スクリーンショット 2023-03-26 4.13.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179652/e3fa1956-90f4-f736-d272-10e387a6b295.png)


## Tree からの 2D ヒストグラムの書き方

Tree から最も簡単に 2D ヒストグラムを書くためには、

``` c:
root [N] t1->Draw("px:py") 
```

だけでよい。ただし、これは自動で適当にビンまとめしたヒストグラムである。

明示的にビン数と範囲を指定したい場合は、

``` c:
root [1] t1->Draw("px:py>>h2d(100,-5,5,100,-10,10)","","colz") 
```

とすると、`h2d(y方向のビン数、y方向の下限値、y方向の上限値、x方向のビン数、x方向の下限値、x方向の上限値)` の2次元のヒストグラムを作成してくれる。

![スクリーンショット 2023-03-26 4.26.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179652/48cca0eb-1504-1823-4399-e727d7575330.png)


## Tbrowser & TTreeViewer の使い方

``` c:
> root -l tree1.root
root [N] TBrowser b
``` 

で、TBrower が立ち上がる。

TTree のアイコンを選択してから、右クリックで、StartViewer を立ち上げる。

![スクリーンショット 2023-03-26 4.32.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179652/8be3bcc8-cec0-1a10-52fe-8259ad581d81.png)

TTreeViewer の使い方は、ドラッグ&ドロップを用いて、ヒストグラムを作成したり、Expression Editor を用いてカット条件を入れたりするなど、GUIで絵を見ながら調べることができる。

![スクリーンショット 2023-03-26 4.41.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179652/b82a7505-f69e-06a3-fc12-59002cc06fed.png)

使い方の詳細などは下記を参照ください。

https://azusa.shinshu-u.ac.jp/~hasegawa/wiki/?%E5%A4%A7%E5%AD%A6%E9%99%A2%E6%8E%88%E6%A5%AD/%E9%AB%98%E3%82%A8%E3%83%8D%E3%83%AB%E3%82%AE%E3%83%BC%E5%AE%9F%E9%A8%93/%E7%B0%A1%E5%8D%98%E3%81%AAROOT%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9

https://atlas.kek.jp/old/comp/ROOT-commands.html

 

## 2D ヒストグラムの1Dのプロジェクション

２次元ヒストグラムのデータ点のある場所で、右クリックし、SetShowProjectionY をクリックする。

![スクリーンショット 2023-03-26 4.47.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179652/139d37c0-cb6c-09b9-588c-edbe31a76513.png)

nbins を聞かれるので、ここでは 10 ビンを設定する。


![スクリーンショット 2023-03-26 4.48.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179652/ae2fc66d-49db-38c4-2f54-c45c6daabb88.png)

マウスを置いた場所から X方向の10 ビンの幅で、Y方向にプロジェクションしたヒストグラムを表示してくれる。2Dヒストグラム上でマウスを動かすと、X方向の10 ビンの幅の範囲が変わるので、1Dヒストグラムの絵も変わる。

![スクリーンショット 2023-03-26 4.48.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179652/d8896c41-5445-760e-7e67-797377089b7d.png)

SetShowProjectionX も射影する方向が違うだけで、使い方は同じ。