Category: ROOTPage 1 of 2

Raspberry Pi 3 (Jessie)にroot 5.34.36をインストール

GROWTH実験で使用するFPGA/高速ADCボードと制御・読み出し用のDAQソフトウエアは、高エネルギー実験でよく使われるCERN/ROOTのROOTファイル形式で波形データを書き出す機能があるのですが、動作試験ができていなかったのでいくつかバグがありました。 Raspberry Piにrootをインストールして動作確認する必要があったので、以下の手順でインストールしました。 ssh -YでRaspberry Piにログインしている場合、rootだけで起動するとおなじみのスプラッシュスクリーンがでてきます。 インストールした環境は GROWTH-DAQのバグについては修正完了後、インストール方法や実行例の記事をアップロードします。 ちなみに、Raspberry Pi上でのコンパイルはmake -j4で1時間以上かかるので、近所にフードコートがある場合はThunder Tea Rice (擂茶饭; バジル・ミント・小豆・ピーナッツ・いんげん・揚げ豆腐やミートボール・ナスの肉詰めが載ったごはん。抹茶や豆が入ったスープと一緒にいただく)を食べて待ちましょう。 ぼくはいままでTanjong Pagar Plaza Food CenterとAmoy Food Centerで食べました(写真はTanjong Pagar Plazaのほう)。どちらもとても美味しい。Tanjong Pagar Plazaの2階のお店のほうが具の選択肢が多いです。 シンガポールのグルメサイトでは各地のThunder Tea…

4. パルス計測プログラムのビルドと測定実行 – GROWTH FPGA/高速ADCボード

雷雲ガンマ線プロジェクト(GROWTH / Thundercloud Project)で開発したGROWTH FPGA/高速ADCボードに関する記事の第四回です。 GRWOTH FPGA/ADCボード関連の記事一覧 GROWTH FPGA/高速ADCボードの概要 GROWTH FPGA/高速ADCボードの拡張コネクタ GROWTH FPGA/高速ADCボードのFPGA書き込み パルス計測プログラムgrowth_daqのビルドと測定実行 GROWTH実験チームでは、GROWTH FPGA/ADCボード用のFPGAイメージに対応したパルス計測・波形取得用のDAQプログラム(growth_daq)をC++で開発して、オープンソースで公開しています。第三回の手順でFPGAを書き込んだボードをMacやRaspberry Piに接続して、growth_daqを実行すると、パルス信号をセルフトリガ方式でトリガしてFITSファイルやROOTファイルにデータを保存できます。なお、growth_daqはC++で記述されたスタンドアロンのプログラムですが、FPGAボードを制御したり取得したデータを伝送したりする機能はライブラリとして分離されています。このライブラリのクラスをユーザが自作したプログラムから利用すれば、実験ごとの要求に応じたデータ取得プログラムを開発することも可能です。 今回はこのgrowth_daqの入手方法、ビルド手順と実行方法を説明します。 この手順にそって作業していても、依存関係のエラーが出る場合があります。その場合はお手数ですが、このブログのコメント欄かgithubのIssueページで連絡してください。 GROWTH-DAQの入手とビルド gitレポジトリのクローン growth_daqは、githubで公開されているGROWTH-DAQというgitレポジトリに入っています。Mac/Raspberry Pi上のコマンドラインから以下のようにしてcloneしてください。gitが入っていない場合は、Homebrewやapt-getでインストールしてください。git submoduleコマンドは、GROWTH-DAQが依存しているライブラリのうち、githubからcloneできるものを自動的にcloneしてくるためのコマンドです。具体的には、GROWTH-DAQ/.gitmodulesに列挙されたライブラリがcloneされます。 なおGROWTH-DAQは、GROWTH実験で開発した検出器システムを雷雲ガンマ線の観測実験で屋外で自律運用するためのソフトウエア群をまとめたgitレポジトリなので、トップディレクトリのREADME.mdではGROWTH-FY2016(とそれ以降)の検出器を駆動する際の手順が説明されています。growth_daqはdaq/内に格納されており、対応するREADMEファイルはdaq/README.mdです。 依存関係のインストール Macでは、Homebrewをインストールしてから、以下の手順でgrowth_daqが依存しているライブラリをインストールしてください。 Raspberry…

PyROOTを起動した時にno current threadというエラーがでる

問題 もうROOTを使うこともあまりないのですが、いざ必要になってPyROOTを起動しようとしたときに、「Fatal Python error: PyThreadState_Get: no current thread」とでて、 のようなエラーがでるとともに、「Python quit unexpectedly」というダイアログが出てPythonが終了してしまう問題が起きました。 原因 ROOTをインストールして以降、HomebrewでOS X付属のもの(/usr/bin/python)とは違うpythonをインストールした。 デフォルトで起動するpythonを、Homebrewで入れたものにしていた。つまり /usr/local/bin/python になっていた。 ROOTに付属しているPyROOTは、OS X付属のpython用にビルドされているので、ライブラリを読み込む時の不整合で上記のエラーが出る。 解決法 OS X付属のPythonを使う。/usr/bin/pythonからimportすると、以下のようにエラーがでない。 ROOTをソースコードから自分でビルドし直す。 暫定的に使えればいいのなら、方法1で問題なさそう。ずっと使うなら、ちゃんとバージョンを合せてビルドしなおすほうが良いですよね。

HongoWikiを移設しました

新しいサーバへ移動しました 東京大学のサーバが不釣になって見られなくなっていたHongoWikiを、自前のサーバに移動して再開しました。新しいアドレスは以下のとおりです。そのうち、Googleの検索ランクも戻ってくると思います。あと、Mediawiki→Jekyllの変更にともない、コメント管理サービスDisqusを使ってコメント欄も付けているので、質問や改善のコメントがある人は気軽に書き込んでください。 HongoWiki – http://ytkyk.info/wiki/ (トップページからページの一覧が見れます) トップページと同じ説明文章を掲載しておきます。ページの追加や内容の更新に興味のある人は、コメント欄から連絡してください。 HongoWikiは2007-2016年に東京大学牧島・中澤研のサーバ上で公開されていた、 高エネルギー宇宙物理学分野の研究に関連した情報をまとめるためのWikiです。 詳細はHongoWikiについてを参照してください。 2016年にサーバトラブルにより閲覧できなくなっていたものを、新しいサーバで公開することにしました。記録的な意味がほとんどで、情報のアップデートはあまりされないと思います。 もし、ギブアンドテイクの精神で、自分でページを作って室の向上に貢献したいというえらい人がいたら、コメント欄で連絡してください。Jekyllのgitレポジトリを編集できるようにして、ページの追加・内容の改修ができるようにします。Markdownで記事が書けて、gitが使えれば大学院生・ポスドク・大学のスタッフ、誰でも歓迎です。 ★暫定的な注意事項★ 画像を含むページはまだ復元できていません。本郷のサーバのバックアップから、画像データをサルベージできた段階で追加します。 よく閲覧されているページへの直接リンク Xspecで自分のモデルを関数として入れる Xspecで自分のモデルをテーブルとして入れる Xspec11ユーザのためのXspec12入門講座 nano【標準で入っていて使い勝手の良いコマンドラインエディタ】 [tmkm-amazon]4883375536[/tmkm-amazon]

【RubyROOT】ヒストグラムをフィットする例

RubyROOTで1次元ヒストグラムのテキストデータを読みこんで、TH1D(Double型の1次元ヒストグラム)に変換し、一次関数+ガウシアンでフィットしてプロットする例を示します。RubyROOTのインストール方法は「RubyROOTをHomebrewでインストールする」を参照してください。 最終的に、以下のようなプロットが得られます。 コード コードは以下のような構成です。コメントに書いてある通りで、シンプルな構成です。以下のコードをコピーペーストして保存してもよいですが、gistにもアップロードしたので、そちらからダウンロードする方が簡単です。ファイル名はread_and_fit_histogram.rbとしてください。 ヒストグラムのデータはhistogram_sampleからダウンロードしてください。ビンのデータが縦に並んだ超シンプルなデータファイルです。 スクリプトの解説 ヒストグラムオブジェクトの作成 TH1Dという、1ビンがdoubleで表現されたROOTの標準的なヒストグラムクラスをもとに、ヒストグラムオブジェクト(インスタンス)を作成しています。 ROOTのTH1(1次元ヒストグラム)のAPIリファレンスはこちら→The Histogram classes テキストファイルの読み込み 標準的なRubyスクリプトのやり方でテキストファイルを開いて、一行ごとに読み込みんでいます。lineに格納された1行の文字列を、.to_i()メソッドを使って整数に変換し、その結果をヒストグラムに格納しています。 もしも入力データが のようにビンの値とカウントのペアになっているときは、読み込み部分は以下のようにString.split(delimitter)メソッドを用いて1行を空白文字で分割して配列に分けてから取り扱います。delimitterを”,”に変更すればCSVのファイルも読み込めます。 この場合、ヒストグラムオブジェクトの作成のところでも、入力データの範囲に対応させて のようにして、ビンの分割数、xmin、xmaxを適切に調整する必要があります。 ヒストグラムへのfill データを詰めるべきビン番号を検索して、line.to_i()で整数に変換したビンの値を設定しています。 プロット TCanvasのインスタンスを作ってから、TH1のDraw()メソッドに、”e”で表される統計エラーオプションをつけて描画しています。簡単ですね。 フィット関数 でフィットに使う関数を定義しています。 TFormulaのAPIリファレンスにあるようにgausは gaus(0) is a substitute…

[ROOT] TGraphからTSpline3を作成する

ROOTのTGraphでデータ列を保持していて、そのスプライン補間関数(cubic splineならTSpline3)を構築したいときは、以下のようにTSpline3::TSpline3(const char* name, const TGraph* g, …)というコンストラクタを使用しましょう。 [tmkm-amazon]9784797370997[/tmkm-amazon] TGraph::Eval()の第二引数にTSpline3のインスタンスを、第三引数に”S”オプションを渡したら、結果が第二引数のオブジェクトに引き継がれるのかと思いきや、そういう仕様ではありませんでした。 Double_t Eval(Double_t x, TSpline* spline = 0, Option_t* option = “”) const  Interpolate points in this graph at…

【ROOT】ファイルを開くとTStreamerInfo::BuildCheckのWarningが出る

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 Fitting] 複数のフィット関数を同時に表示する

ガンマ線スペクトル等をROOTのヒストグラムとして扱って、輝線放射に対してpol1+gausのような関数でフィットする際、複数の輝線のフィット結果を同時に描画したいことがあります。以下のように、Fit()メソッドの第二引数として、”+”を指定すると、ヒストグラムオブジェクトのフィット関数リストに追加されていき、Draw()したときに過去のフィット結果も同時にプロットされるようになります(デフォルトでは、ヒストグラムのフィット関数リストは、Fit()をコールするたびに毎回履歴がdeleteされます)。 具体的な例で実行すると、以下のような感じになります。以下の例では、4個の輝線に対してpol1+gausで構成される4個のTF1のインスタンスについてフィットしています。 詳細は、TH1のFitメソッドのAPIリファレンスを参照してください。 The list of fit options is given in parameter option. option = “W” Set all weights to 1 for non empty bins; ignore error bars…

RubyROOTでDraw()したときに統計情報を表示しない

RubyROOTでヒストグラムをDraw()すると、.rootmacros内でgROOT->SetOptStat(0)していても効かずに、図の右上に統計情報が表示されることがあります。見栄えの問題でこの統計情報を消したい場合は、以下のようにしてください。 以下、RubyFitsと同時に用いて、あるFITSファイルの1st extensionに記録されたXとYをhistogramに詰めて、上下に分割したCanvasにプロットする際の例です。以下のような表示になります。 gStyle.SetOptStat(0)をコメントアウトすれば、以下のように統計情報が出ます(というかこちらがデフォルト)。

RubyROOTをHomebrewでインストールする

RubyからCern/ROOTが使える、めちゃくちゃ便利なRubyROOTというツールがあります。JAXAのHirokazu Odakaさんが開発・メンテしてくれています。 マニュアルビルドするには、swigやcmakeを用意する必要があるのですが、簡単にインストールできるようにHomebrewのFormulaを作って、tapに入れました。Macの人はHomebrewをインストールしてから、以下のようにしてtapを取得して、インストールすると使えるようになります。 もしROOTが入っていない場合は、 してください。   天文データを扱う人は、RubyFitsもぜひどうぞ。 でインストールできます。高エネルギー宇宙物理の人は、RubyROOTとRubyFITSを同時に使うと、C++を書かずに論文を書くのに必要なデータ解析ができるようになりますよ。 RubyROOTのサンプルコードはgithubのexamplesフォルダを見るか、HongoWikiの「RubyからROOTを使う」のページも参考にしてください。 たとえば、以下のようにヒストグラムを作成できます(write_hist.rb)。