ANAROOT/要望
ANAROOT/要望について、ここに記述してください。
Contents
warning messesage
エラー等はく際は
- Info
- Error
- Warn (現段階ではDebugと同等)
- Debug
を用意しているが、Infoが多くでて来ると、start()した後にうざい。
その為にWarnを準備しているが、どこかにメッセージをつめておいて、
dmesg()
みたいな事をしたらメッセージをdumpする仕様にしようかと思っている。
getxml.pyの置き場
解析PC(c02)でgetxml.pyとかの置き場ですが、
$HOME/exp/scripts
でいいですか?HOMEが汚くなるのが嫌ですし。 面倒なのでそこにPATHを通しました。
TArtDataObjectのSetDetectorNameについて
nai->SetDetectorName(para->GetDetectorName());
みたいに"*"演算子なしで受け渡ししたいので、
void SetDetectorName(TString *val){name = *val;}
をつけ加えませんか? (2012 2/28 田中)
TClonesArrayのClear
TCLonesArrayでメモリリークが起こる理由がわかった気がする。 公式をみると、
TClonesArray::Delete Clear the clones array. Use this routine when your objects allocate memory (e.g. objects inheriting from TNamed or containing TStrings allocate memory). If not you better use Clear() since if is faster.
と書いてあり、TStringsをクラス内で使っている場合はClearではなくDeleteを使えとのこと。 基本的にClearではなくDeleteにしたほうがいいかも。 (2012 2/27 田中)
bug情報
これから先バグ報告スレッドがあると便利かも? あと、プログラムが落ちた場合は、
The lines below might hint at the cause of the crash. ... that might help us fixing this issue. =========================================================== #12 0x064ccc59 in TCanvas::RaiseWindow() () from /usr/local/root.5.32/lib/root/libGpad.so ... #16 0x07a3eae6 in hn () at src/TArtAlias.cc:19 ===========================================================
の部分を貼っつけてください。 あとはどうやったら落ちたとか再現性とかまで言っていただけるとdebugが楽です。 (2012 2/25 田中)
Nadekoについて
rootを立ち上げていきなりhtp()すると
*** Break *** segmentation violation =========================================================== There was a crash (#7 0x0030e6cd in SigHandler ()). This is the entire stack trace of all threads: =========================================================== #0 0x00110416 in __kernel_vsyscall () #1 0x03d59953 in __waitpid_nocancel () from /lib/libc.so.6
で鬱陶しい。まあこんなことしないのだけど何にもヒストグラムねぇぞコラ的なメッセージを出してほしい。(2012 2/24 近藤)
--> バグ報告ありがとうございます。調べたところ、ポインタを初期化していないことにより起こるバグでした(なのでhnとか他のコマンドでも同じバグが潜んでいる)。近いうちに修正します。 Nadekoはいつどんな時にどのコマンドを使っても 問題が起きないという設計をしているつもりですので、Nadekoのコマンドで落ちたらご連絡ください。 何もhistが無いときレベルのことに対してメッセージを出すとなると結構な量のメッセージを書く必要があるので多分やりません。 (ちなみに、hn()でも一番最初は1個目のhistが表示されます。) (2012 2/25 田中)
branches/2012SAMURAI.tanaka では更新しました。 (2012 2/25 田中)
UIコマンドのページ
Startup Guideみたいな簡単な例があるといいね。(2012 02/13近藤)
UIコマンド以下にUI周りのドキュメント作りました。 (2012 2/19 田中)
スタートアップガイド、Nadeko、Analoopごとのページにするのが良いかも?少なくともページのコンテンツがどのライブラリ(Nadeko、Analoop)に関するもなのかは明記してほしい。(1012 2/25 近藤)
最適化
(2012 2/9 田中)FindなんちゃらでPlaとかParaを探すときに現在はシーケンシャルに検索しているけれど、 これを、あらかじめmappingしておいて一発で検索出きるようにしたところNEBULAのencで大体二倍速になった。 具体的にはTClonesArrayのnewをするところで同時にIDをkeyとし、何番目に入れたかやparaを値としてstd::mapにつめます。
fIDNPlaMap.insert(std::pair<int, int>(para->GetID(), npla));
で、Findなんちゃらではこのmapから検索します。
std::map<int,int>::const_iterator it = fIDNPlaParaMap.find(id); if(it != fIDNPlaParaMap.end()) return GetNEBULAPlaPara(it->second); else return 0; (ClearDataでstd::map.clear()を呼のを忘れずに。)
Findとつくものに対して全てmapを作って上げれば完成です(NEBULAの場合は3箇所)。 気が向いたら実装してみてください。
環境設定について
(2012 2/8 田中) thisroot.shはスクリプトがあるディレクトリで実行しないとおかしくなるので、僕は.bashrcに、
# root export temp_dir=$PWD cd /usr/local/root source bin/thisroot.sh cd $temp_dir unset temp_dir # anaroot export TARTSYS=$HOME/anaroot export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TARTSYS/lib
こんなのを書いています。 いずれディレクトリ構造や昔のanaloginみたいなのも作る必要があると思うので、 そのときにこの問題も合わせて検討ください。
-> cdをcdlsという関数に張り替えているのが原因でした。普通の場合は
. /usr/local/root/bin/thisroot.sh
とかで問題ないのですね。お騒がせしました。
analoginみたいなもの
僕はこんなスクリプト使っています。(近藤) makeanadir.sh
(2012/2/14 田中) analoginをそのままにシンプルにしてみました(誤爆対策でy/n付き) analogin.sh (変更したいけど権限がないといって怒られる...)。
これを回す前に、
exp/commisioning_samurai exp/commisioning_samurai/src(anaroot_vX.X.Xへのリンクを貼ることになる気がする) exp/commisioning_samurai/users exp/commisioning_samurai/users/default(新しいユーザーを作るときはこれをまるごとコピることになる)
を置いてもらい、あとは.bashrcに
alias analogin='source hogehoge/analogin.sh'
と書いてもらえば完成です。
TArtNEBULAについて
名前の付け方について
(近藤)
- TArtNEBULAのfEnergy(ADCを較正したもの)はfEdepositとかにしたい。
- TArtNEBULAParametersのqcalというパラメーターはqslopeとかにしたい。
- TArtNEBULA(名前変えたい)のメンバ変数は何が必要?
- id,layer,ADCu/d,TDCu/d,Tcal(u/d),Tave,Aave,dT,x,y,z,...
- TOFを作るには別のplasticの時間が必要だけど...
- 今の感じだと例えば1つの検出器がどの層かを知ろうと思うと
TArtNEBULA* pla = mynebula->GetNEBULA(ihit); Int_t layer = pla->GetPara()->GetLayer();
と面倒かつ直観的でない。layer=pla->GetLayer()で行けるようにしたい。ただしlayerはxmlで(エクセルで)書いておいたほうが編集しやすいのでTArtNEBULAで同じlayerというメンバを持っておいてparaからコピーするのか?2重で無駄?
->(2011 2/9 田中) 僕のページに新しく上げたソースでなんとなく(positionのoffsetは直書き)実装しました。名前はとりあえず自分規約で付けてます。
TArtCalibNEBULA
NEBULAの解析では、最終的にはソフトでthresholdを設定して、それを越えたものだけを解析したい。その場合にTArtNEBULAを継承したものを使うのか?それともTArtNEBULAPlaにそういうフラグみたいのを加えるのか?Online解析では単にゲートを掛ければよいけど。(2012/02/13 近藤)
TArtDALIについて
anaroot_v4.3.1についてです。(近藤)
DopplerCorrectはtofが引数になっているが、βとする方がわかりやすいと思います。しかもconstで良いか。
- addback解析とかとつなげられるようになっていると良いか?TArtDALIArrayをとってきてマクロを書けばできるのでいらないかも。
- PPACのTXsumの様な、ある時間ゲートに入ったものだけを真のイベントとみなして解析するようなものも必要(とりあえずは優先度低め)
このページへの要望
更新されてもしばらく気が付かないので、RSSとかで更新が出ると嬉しい。
--> RSSはじめました。ANAROOTトップページのRSSアイコンをクリックしてください。出来はとってもいまいちです。更新履歴をRSSに変換しただけで、どのページが更新されたかがわかる程度で、ページのどこが更新されたかはRSSからは全然わからない。。。(2012 2/21近藤)
(2012 2/8 田中) 言うだけで何もしないですが、左側に小林さんのページみたいにリンク一覧があるとうれしいです。 あと、何かしらの規則見たいな物があると書きやすいかも。
(2012/02/12 近藤) とりあえずSideBarつけました。
ERROR Messageについて
mapファイル(nebula.map)がなくてもデータを読み込むが、detidとかはもちろん正しくない。マップファイルがない場合にはエラーを表示してほしい。 (近藤)
回答?:mapファイル経由だとdevice,fpl,detector,geo,chから一度category detidをマップし、その後さらにADCへとの代入になる。ANAROOTではdevice,fpl,detector,geo,chから直接ADCへマッピングすることで計算速度を向上させようとしている。(このマッピング情報はキャリブレーションパラメータと同じxmlファイルに格納されている。)なので、mapファイルの使用はオプションと想定している。つまりユーザー側でエラー処理をして貰いたい。if(detid==-1)false;みたいな感じで。
(近藤)TArtCalibDALIのLoadRawDataでは書いてありますね。
TArtRIDFMap mm(fpl,detector,geo,ch); TArtDALIPara *para = (TArtDALIPara*)setup->GetDALIPara(&mm); if(NULL == para){ TArtCore::Info(__FILE__,"Could not find TArtDALIPara...: Dev:%d, %s", device, mm.GetMapInfo()); continue; }
(2012 2/9 田中) TArtCalibNEBULAでは一時的にerror処理を切っていました。 loop内でエラーが発生した場合に無限に出続けて困るので、 例えば、、、(以下いろいろ問題ありだったので消しました。)
TArtNEBULAについて
名前の付け方について
(近藤)
- TArtNEBULAのfEnergy(ADCを較正したもの)はfEdepositとかにしたい。
- TArtNEBULAParametersのqcalというパラメーターはqslopeとかにしたい。
- TArtNEBULA(名前変えたい)のメンバ変数は何が必要?
- id,layer,ADCu/d,TDCu/d,Tcal(u/d),Tave,Aave,dT,x,y,z,...
- TOFを作るには別のplasticの時間が必要だけど...
- 今の感じだと例えば1つの検出器がどの層かを知ろうと思うと
TArtNEBULA* pla = mynebula->GetNEBULA(ihit); Int_t layer = pla->GetPara()->GetLayer();
と面倒かつ直観的でない。layer=pla->GetLayer()で行けるようにしたい。ただしlayerはxmlで(エクセルで)書いておいたほうが編集しやすいのでTArtNEBULAで同じlayerというメンバを持っておいてparaからコピーするのか?2重で無駄?
->(2011 2/9 田中) 僕のページに新しく上げたソースでなんとなく(positionのoffsetは直書き)実装しました。名前はとりあえず自分規約で付けてます。
TArtCalibNEBULA
NEBULAの解析では、最終的にはソフトでthresholdを設定して、それを越えたものだけを解析したい。その場合にTArtNEBULAを継承したものを使うのか?それともTArtNEBULAPlaにそういうフラグみたいのを加えるのか?Online解析では単にゲートを掛ければよいけど。(2012/02/13 近藤)
TArtDALIについて
anaroot_v4.3.1についてです。(近藤)
DopplerCorrectはtofが引数になっているが、βとする方がわかりやすいと思います。しかもconstで良いか。
- addback解析とかとつなげられるようになっていると良いか?TArtDALIArrayをとってきてマクロを書けばできるのでいらないかも。
- PPACのTXsumの様な、ある時間ゲートに入ったものだけを真のイベントとみなして解析するようなものも必要(とりあえずは優先度低め)
このページへの要望
更新されてもしばらく気が付かないので、RSSとかで更新が出ると嬉しい。
--> RSSはじめました。ANAROOTトップページのRSSアイコンをクリックしてください。出来はとってもいまいちです。更新履歴をRSSに変換しただけで、どのページが更新されたかがわかる程度で、ページのどこが更新されたかはRSSからは全然わからない。。。(2012 2/21近藤)
(2012 2/8 田中) 言うだけで何もしないですが、左側に小林さんのページみたいにリンク一覧があるとうれしいです。 あと、何かしらの規則見たいな物があると書きやすいかも。
(2012/02/12 近藤) とりあえずSideBarつけました。
ERROR Messageについて
mapファイル(nebula.map)がなくてもデータを読み込むが、detidとかはもちろん正しくない。マップファイルがない場合にはエラーを表示してほしい。 (近藤)
回答?:mapファイル経由だとdevice,fpl,detector,geo,chから一度category detidをマップし、その後さらにADCへとの代入になる。ANAROOTではdevice,fpl,detector,geo,chから直接ADCへマッピングすることで計算速度を向上させようとしている。(このマッピング情報はキャリブレーションパラメータと同じxmlファイルに格納されている。)なので、mapファイルの使用はオプションと想定している。つまりユーザー側でエラー処理をして貰いたい。if(detid==-1)false;みたいな感じで。
(近藤)TArtCalibDALIのLoadRawDataでは書いてありますね。
TArtRIDFMap mm(fpl,detector,geo,ch); TArtDALIPara *para = (TArtDALIPara*)setup->GetDALIPara(&mm); if(NULL == para){ TArtCore::Info(__FILE__,"Could not find TArtDALIPara...: Dev:%d, %s", device, mm.GetMapInfo()); continue; }
(2012 2/9 田中) TArtCalibNEBULAでは一時的にerror処理を切っていました。 loop内でエラーが発生した場合に無限に出続けて困るので、 例えば、、、(以下いろいろ問題ありだったので消しました。)