= 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)