= HROOTを用いたplotツールの開発 = ''' ソースコード ''' KAGRA !DetCharグループで開発中の最新のmoduleはgithubから見ることができる [[https://github.com/gw-analysis/detector-characterization/blob/master/HasKAL/src/HasKAL/PlotUtils/PlotUtilsHROOT.hs|PlotUtilsHROOT.hs]] '''解決すべき問題点''' 1. TGraphを使ってplotしたときにline, width, color, Markerを変更するオプションが効かない これらを使うタイミングはROOTと同じ順序だと思って使ってみると、コンパイル時にエラーも出ず、実行時にもエラーは出ない しかし上記のオプションが効いている様子はない 具体的には サンプルコードを https://github.com/gw-analysis/detector-characterization/tree/master/attic/HROOT_opition_error に置いた 2. TGraphで作ったグラフにLabelを付ける これはHROOTにこれらを追加するオプションを見つけられなかった 現状HROOT開発者の対応を待つか、こちらでどうにかするしかない 3. TH2Fでcontourの色合いを変更することができない 例えば、T-F平面で色合いがSNRを表す2次元のcontour mapを書いたときに、SNRの色合いを変更できない ROOTでそれを変更する関数は、 gStyle->SetPalette(1); 参考 : http://root.cern.ch/root/html/THistPainter.html 端山さんのMacでは上記のトラブルは起こっていないが、任意に色を変更することができないのは問題 サンプルコードは以下の場所にある https://github.com/gw-analysis/detector-characterization/tree/master/attic/contourPlot 4.TApplication型の変数をdeleteできない plot関数を2度呼び出すと、tapplication型のtappを新規に宣言しようとする(newTApplication) しかしROOTはTApplication型の変数を1つのプログラムで1度しか使えないようになっているので エラーが出てプログラムが強制終了される DetCharの記事にも書いた(2番目の項目) http://gwclio.icrr.u-tokyo.ac.jp/lcgtsubgroup/detectorcharacterization/2014/05/hrootplot4.html 解決方法としては、C言語でいうところのglobal変数としてTApplication型のtappを宣言する monadを使えば、それと同じことができるという記載を発見したので、現在monadについて理解を進めている http://itpro.nikkeibp.co.jp/article/COLUMN/20090303/325807/ もう一つの解決策は、HROOTの開発者にdelete関数によってきちんとtappを削除できるようしてもらうことが考えられる。(HROOTの開発者には、この問題についてサンプルコードとともに伝えた。2014/6/20) 開発者の方から方からメールに返信があった。deleteがきちんとtappを削除しきっていない問題はROOT自身の問題なので、開発者側では対処できないとのこと。山本氏が作成したtapplicationをgrobal変数として定義して複数回callするc++のソースとともにメールの返信を行った(2014/6/30) 5. ROOTのリアルタイムプロットの関数を使いたい ROOTのTGraphを用いてプロットをするときに、 データ点を追加して行くと、以前からあるデータはそのままにして、追加されたデータ点のみを書き足すというかなり効率的な仕組みになっている。 現在詰まっている問題は、canvasを宣言し、run tapp 1として画面描写をすると自動的には画面をcloseすることができないため、次のデータを自動的に画面描写することができず、リアルタイムプロットができない。 この問題もサンプルコードとともに開発者にメールで伝えた。(2014/6/20)