Archive of posts with tag 'ROOT'
GROWTH実験で使用するFPGA/高速ADCボードと制御・読み出し用のDAQソフトウエアは、高エネルギー実験でよく使われるCERN/ROOTのROOTファイル形式で波形データを書き出す機能があるのですが、動作試験ができていなかったのでいくつかバグがありました。
雷雲ガンマ線プロジェクト(GROWTH / Thundercloud Project)で開発したGROWTH FPGA/高速ADCボードに関する記事の第四回です。
問題
もうROOTを使うこともあまりないのですが、いざ必要になってPyROOTを起動しようとしたときに、「Fatal Python error: PyThreadState_Get: no current thread」とでて、
新しいサーバへ移動しました
東京大学のサーバが不釣になって見られなくなっていたHongoWikiを、自前のサーバに移動して再開しました。新しいアドレスは以下のとおりです。そのうち、Googleの検索ランクも戻ってくると思います。あと、Mediawiki→Jekyllの変更にともない、コメント管理サービスDisqusを使ってコメント欄も付けているので、質問や改善のコメントがある人は気軽に書き込んでください。
RubyROOTで1次元ヒストグラムのテキストデータを読みこんで、TH1D(Double型の1次元ヒストグラム)に変換し、一次関数+ガウシアンでフィットしてプロットする例を示します。RubyROOTのインストール方法は「RubyROOTをHomebrewでインストールする」を参照してください。
ROOTのTGraphでデータ列を保持していて、そのスプライン補間関数(cubic splineならTSpline3)を構築したいときは、以下のようにTSpline3::TSpline3(const char* name, const TGraph* g, …)というコンストラクタを使用しましょう。
TStreamerInfo::BuildCheckのWarning
CERN/ROOTを使っている時に、 Mac 1で作成したROOTファイルをMac 2で開こうとすると、TStreamerInfo::BuildCheckが以下のようなWarningを出しました。メッセージの要旨は「ROOTファイルから読み込んだTNamedやTAttMarkerといったクラスの定義情報が、現在使用しているROOTのバイナリにおける定義と異なっている」です。
原因
おかしいなと思って調べると、2台のMacでROOTのバージョンが違っていました。Mac 1ではROOT 5.34.25でファイルを作成して保存していたのに対し、Mac 2ではROOT 5.24.00で開こうとしていました。
解決方法
Mac 2のROOTを5.34.25にアップグレードしたところ、Warningは出なくなりました。実験データの取得を行うDAQ用Macと解析用のMacのソフトウエア環境は揃えましょう、という教訓です。
ガンマ線スペクトル等をROOTのヒストグラムとして扱って、輝線放射に対してpol1+gausのような関数でフィットする際、複数の輝線のフィット結果を同時に描画したいことがあります。以下のように、Fit()メソッドの第二引数として、”+”を指定すると、ヒストグラムオブジェクトのフィット関数リストに追加されていき、Draw()したときに過去のフィット結果も同時にプロットされるようになります(デフォルトでは、ヒストグラムのフィット関数リストは、Fit()をコールするたびに毎回履歴がdeleteされます)。
RubyROOTでヒストグラムをDraw()すると、.rootmacros内でgROOT->SetOptStat(0)していても効かずに、図の右上に統計情報が表示されることがあります。見栄えの問題でこの統計情報を消したい場合は、以下のようにしてください。
RubyからCern/ROOTが使える、めちゃくちゃ便利なRubyROOTというツールがあります。JAXAのHirokazu Odakaさんが開発・メンテしてくれています。
最近あまり情報についていけていませんでしたが、ROOTのメジャーアップデート版であるVersion 6のベータ版が2013年12月に公開されていたようですね。
何と言ってもVersion 5系からの一番の違いは、CINTからLLVM/clangベースのClingへとC++インタプリタが置き換えられたことですね。CINTも、それが最初に作られた時代のことを考えるとひじょうにすぐれた仕組みでしたが、LLVMの登場とC++1x系のサポートを考慮していよいよ移行となり、感慨深いです。
すでにROOTのgitレポジトリのmasterはVersion6系に切り替わっているとのことで、gitで以下のようにcloneすると取得できます。
` git clone http://root.cern.ch/git/root.git `