Deletions are marked like this. | Additions are marked like this. |
Line 77: | Line 77: |
NEBULAの解析では、最終的にはソフトでthresholdを設定して、それを越えたものだけを解析したい。その場合にTArtNEBULAを継承したものを使うのか?それともTArtNEBULAPlaにそういうフラグ見たいのを加えるのか?Online解析では単にゲートを掛ければよいけど。(2012/02/13 近藤) | NEBULAの解析では、最終的にはソフトでthresholdを設定して、それを越えたものだけを解析したい。その場合にTArtNEBULAを継承したものを使うのか?それともTArtNEBULAPlaにそういうフラグみたいのを加えるのか?Online解析では単にゲートを掛ければよいけど。(2012/02/13 近藤) |
ANAROOT/要望
ANAROOT/要望について、ここに記述してください。
Contents
最適化
(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箇所)。 気が向いたら実装してみてください。
parameterをコンストラクタで拾ってくることについて
(2012 2/9 田中) 戻り値が0でないか見るだけでコンストラクトの順番がおかしい場合に error処理できるので書かないですか?
if(!setup){ std::cerr << "error" << std::endl; throw; }
みたいに。
環境設定について
(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みたいなのも作る必要があると思うので、 そのときにこの問題も合わせて検討ください。
analoginみたいなもの
僕はこんなスクリプト使っています。(近藤) makeanadir.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とかで更新が出ると嬉しい。
--> やり方がぱっとわからないのですぐには対応できそうにないです。(近藤)
(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内でエラーが発生した場合に無限に出続けて困るので、 例えば、、、(以下いろいろ問題ありだったので消しました。)