ROOT初心者様へ
ROOT初心者には絶対にJuliaがおすすめです。
これからJuliaを使っていくことで気づくことになるでしょう!!
初めに
このページではUnROOTの簡単な使い方を学習します。対象としてはROOTを初めて使ったり、すでに使っている方が、Juliaで解析したいとなった際に、その手助けになるようなものを目指しました。pyrootの知識がなくても使えるように書いたつもりですので、ぜひ読んでいただければと思います。
UnROOTとは
UnROOTはJuliaの速さと記述しやすさでROOTファイルの中の変数をより自由に編集しちゃおうというモジュールです。早速導入方法を説明していきます。
1.導入方法
Juliaがダウンロードされている前提で話を進めます。
(ダウンロード方法は以下参照)
https://qiita.com/ttabata/items/b05bb43d06239f968035
シェルでJuliaを起動させます
julia
次にモジュールの追加モードに変更します(「]」キーを押しください)
最後に以下を押せば完了です
add UnROOT
これでモジュールのダウンロードは完了です。どうですかPythonなんかに比べて圧倒的に使いやすいでしょう。
では早速次の項目から使い方を見てみましょう。
実践編
1. columnsの数値を取り出そう
Juliaを起動して次のコマンドを打ちましょう
using UnROOT
するとUnROOTが立ち上がります。ここで好きなrootファイルを以下のようにしてJuliaに取り組ませましょう。
f = ROOTFile("rootfile_name.root")
押すと大量の情報が出てくるはずです。これは各ツリーの内容を意味しており、.lsと同じ役割をしてくれます。
これでrootfile_name.rootがfとしてJuliaに認識されます。
次にtreeを開いてみましょう。
tree = LazyTree(f,"tree_name")
するとtree_nameの内容が横軸カラム、縦軸数値順で並ぶと思います。
これでtreeの準備は整いました。あとは数値を出力するだけです。
tree.カラム名
するとカラムに入っている数値が全て吐き出されます。これを拾って計算などを行ってください。
2.便利機能
次にUnROOTができる便利な事象をお伝えできればと思います。
2.1 treeのカラムを全て確認する
LazyTreeでTreeを読み込んだ後に、以下のコードを押すと、tree内の絡むを書き出してくれます。
names(tree)
2.2 ループの回し方
C並に早いJuliaはとても早くループを回すことができます。
以下のコマンドでループを回すことができます
for entry(ROOTファイルによって異なります) in tree
...
end
マルチスレッドでも実行可能です
Threads.@threads for entry in tree
...
end
実行タイミングや詳しい遅延条件などは以下の公式サイトを参照してください
https://juliahep.github.io/UnROOT.jl/stable/
2.3 ROOTファイルへの書き込み
UnROOT自体にROOTファイルへの書き込み手段はありません。したがって、PyCallパッケージを利用し、Pythonを呼び出し、そこからROOTファイルに書き込む必要があります。
PyCallで呼び出すPythonの設定はいかになります。
ENV["JULIA_PYTHONCALL_EXE"] = readchomp(`which python`)
本記事での紹介は以上です。より細かい話は引用した引用した公式サイトを見ていただけると助かります。
公式サイト