Revision 39 as of 2012-02-12 13:44:55

Clear message
Locked History Actions

ANAROOT/要望

ANAROOT/要望

ANAROOT/要望について、ここに記述してください。

最適化

(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は直書き)実装しました。名前はとりあえず自分規約で付けてます。

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内でエラーが発生した場合に無限に出続けて困るので、 例えば、、、(以下いろいろ問題ありだったので消しました。)