CentOS7でPyROOT環境を作る。

matplotlibが見た目も良い上にヒストグラムも書けるので気に入っている。
しかし、リアルタイムモニタを作るにあたって、インクリメンタルにヒストグラムを積み上げていく必要があり、matplotlibには、その方法が見当たらなかった。ここは素直にROOTを使うことにした。


CERNの公式サイトから、下記のバージョンをダウンロード
Version 6 - Release 6.04/14 - 2016-02-03
解凍したファイルは、/user/localへコピーしておく。

# cp -r root /usr/local/


LD_LIBRARY_PATHとPYTHONPATHを設定する。

vim ~/.bashrc


export ROOTSYS=/usr/local/root_6.04.16
export PATH=$ROOTSYS/bin:$PATH
export LD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH
export PYTHONPATH=$ROOTSYS/lib:$PYTHONPATH


ROOTSYSは適宜書き換える。
basicはシェルの起動毎に読み込まれるので、 シェルを再起動する。


ROOTがPythonでインポートできるか確認

$ python
>>> import ROOT
ERROR in cling::CIFactory::createCI(): cannot extract standard library include paths!
Invoking:
echo | LC_ALL=C c++ -pipe -m64 -Wall -W -Woverloaded-virtual -fsigned-char -fPIC -pthread -std=c++11 -Wno-deprecated-declarations -Wno-comment -Wno-unused-parameter -Wno-maybe-uninitialized -Wno-unused-but-set-variable -Wno-missing-field-initializers -fPIC -fvisibility-inlines-hidden -std=c++11 -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -Wcast-qual -fno-strict-aliasing -pedantic -Wno-long-long -Wall -W -Wno-unused-parameter -Wwrite-strings -O2 -DNDEBUG -xc++ -E -v - 2>&1 >/dev/null | awk '/^#include
^
input_line_3:38:10: fatal error: 'string' file not found
#include


とか言われる。C++が無いと言っているので、

# yum install gcc-g++
してgcc-c++-4.8を入れる。

もう一度


>>> import ROOT

何も返ってこないので、うまくインポートできた。

以下のプログラムファイルを作成


$ vim test-hist.py
from ROOT import TH1F,gRandom,TNamed

h1 = TH1F('h1','test hist',100,0.,10.)
for i in range(0,100000):
h1.Fill(gRandom.Gaus(5.,1.))
h1.Draw()
while 1: pass

$ python test-hist.py

ヒストグラムが表示できた♪