Locked History Actions

Diff for "ANAROOT/掲示板"

Differences between revisions 43 and 44
Deletions are marked like this. Additions are marked like this.
Line 18: Line 18:
例えばMapが違うIDのものでかぶったら、Warningメッセージを出すのかな?でもメッセージはわりと無視しそうだし。うーむ。誰か妙案ありませんか? 例えば違うIDのものでMapがかぶったら、Warningメッセージを出すのかな?でもメッセージはわりと無視しそうだし。うーむ。誰か妙案ありませんか?

ANAROOT掲示板

質問・要望・バグ情報などなんでも気軽に書き込んでください。

書き込みのルール

  • 新しいスレッドは上に来るようにしてください。
  • 日付(と名前、匿名でもいいけど)をはじめに書くようにしてください。(あとで整理しやすいので)

Mapについての要望(疑問?)

(2012 07/06 近藤) 現在PlasticのTArtRIDFMapはpairを用いて管理されている。Mapをキーにしたpairコンテナにparaを格納しておく。TArtCalibPlastic内でFindPlasticPara(&mm)としてparaを見つけ、para->GetID()してあるIDのplaにデータを入れる。ただしSAMURAIではF3plとF3pl-40nsというのがあって、こいつはTは違うけどQは同じ。この場合、例えばF3pl-40nsのparaにはQのMapは(重複しているために)格納されないので、Qのデータが入らない。別のIDに同じマップが割り当てられてもええじゃないか、という仕様にしてほしい。

ただしデメリットもある。多チャンネルのものの場合、誤って違う2つのIDのQに対して同じMapを書いてしまったりする。そうするとそれっぽいデータは入っているので、TとQの相関を見ない限り気づかなくなる。

例えば違うIDのものでMapがかぶったら、Warningメッセージを出すのかな?でもメッセージはわりと無視しそうだし。うーむ。誰か妙案ありませんか?

csv形式のParameterファイルの読み込み

(2012 07/04 近藤)作ってみました。

使用例

  TArtCSVParameter *para = new TArtCSVParameter();
  para->LoadParameter("NEBULA","input1.csv");
  para->LoadParameter("NEBULA","input2.csv");
  para->Write("output.xml");
  delete para;

以下仕様

  • カンマの数がおかしいとメッセージ
  • 改行はスキップ
  • 空白はスキップ
  • 複数のファイルを読み込める。例えばMapとTcalのパラメーターなどを別々のファイルにできる。
  • 同じ情報がある場合には上書きされる。
  • xmlファイルを吐ける
  • xmlのNodeを渡せばANAROOTですぐに使えるはず(まだ未確認。最悪xmlファイル吐いて読み込めばいいのだけれど...)
  • XMLの構造が変わるとダメかも?今は

 dataroot
     |--------------------|----...
   NEBULA              NEBULA
     |                    | 
  ID(=1),NAME,...    ID(=2),NAME,...

という構造のみを考慮している。

ANAROOTと組み合わせるときにrootcintでエラーになるが、optionの-pをつけるとできた。

Nadekoのdlopen error

(2012 07/03 近藤)ROOTのバージョンを5.34.00にしたら以下のエラー

[kondo@kurage anaroot]$ root
add include path : -I/home/kondo/exp/samurai/dayone/anaroot/src/include
reading libXMLParser.so
reading /home/kondo/exp/samurai/dayone/anaroot/src/lib/libanaroot.so
dlopen error: /home/kondo/exp/samurai/dayone/anaroot/src/lib/libananadeko.so.0: undefined symbol: gDirectory
Load Error: Failed to load Dynamic link library /home/kondo/exp/samurai/dayone/anaroot/src/lib/libanaroot.so

ROOTのversion5.30.00だと大丈夫。Nadekoのversionは2012SAMURAI.dayone.tanakaのr322。

2012SAMURAI.dayone.tanakaコンパイルエラー

(2012 06/27 近藤)2012SAMURAI.dayone.tanakaをコンパイルするとこんなエラー。

src/TAlEncSAMURAIDCHitExample.cc: In member function 'virtual bool TAlEncSAMURAIDCHitExample::Calculate()':
src/TAlEncSAMURAIDCHitExample.cc:258: 警告: 符合付きと符合無しの整数式同士の比較です
src/TAlEncSAMURAIDCHitExample.cc:267: 警告: 符合付きと符合無しの整数式同士の比較です
src/TAlEncSAMURAIDCHitExample.cc:269: error: call of overloaded 'abs(double&)' is ambiguous
/usr/include/stdlib.h:691: note: candidates are: int abs(int)
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/cstdlib:142: note:                 long int std::abs(long int)
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/cstdlib:172: note:                 long long int __gnu_cxx::abs(long long int)
src/TAlEncSAMURAIDCHitExample.cc:275: 警告: 符合付きと符合無しの整数式同士の比較です
make[2]: *** [src/TAlEncSAMURAIDCHitExample.o] エラー 1

これは僕のPCだけ?環境依存?fabsにしておいてほしい。 また警告の符号なんたらというメッセージもかなり気になる。

anafile

(2012 04/21 近藤) anafileで定義していないゲートが書いてあるとrootが落ちる。出来ればそんなゲート定義していないよ、っていうメッセージが出てほしい。

(2012 04/22 田中) histogramに使った場合はbookした時点でerrorメッセージがでます。stopで使った場合はstartしたあとにgateがなかったら落ちます。 stopより先にanafileでgateを定義させればstopを処理する時点でerrorを吐けますが、、考えておきます。

(2012 06/03 田中) anafileまわりの仕様が変わったので解決かと

TAlEncSAMURAIPlaExample

(2012 04/21 近藤) TLcalとTRcalの追加をお願いします。

(2012 04/22 田中) 2012SAMURAI.NaN.tanakaに追加しました。

anafile編集用のemacsのlispコード

(2012 04/19 近藤)Julienが作った lispのコード を少しいじってAnaloopのanafile用にした。

ana-mode.el

~/.emacs.d/に放り込んで.emacsに以下を追加すればOK。

; ANALYS mode
(autoload 'ana-mode "~/.emacs.d/ana-mode.el" "Mode for editing ANA files." t)
(setq auto-mode-alist (cons '("\\.ana$" . ana-mode) auto-mode-alist)) 

(2012 04/23 田中) comment out に指定する文字の定義は<analys>とかを指定するところより 先に書かないと優先されないので、先に書くことをおすすめする。 ちなみに"//"はコメントアウトとして使えます。 また、行の途中にコメントアウト書くことも出きるようになりました。

AnaLoopのIDのリスト

(2012 04/18 近藤) Analoopでlv()でvalの定義が出るけど、IDのリストを表示させるコマンドがほしい。

(2012 04/18 田中) やっぱりIDを表示は大変なので、EWNum.hhの該当部分をまるごとprintすることにしました。とりあえずこれで勘弁願います。

解析残り時間

(2012 04/03 近藤) Analoopでstatus()としたときに後何分で解析が終わるかを表示させてほしい。

(2012 04/18 田中) どこからか全イベント数を取ってこれますか?(自分で書くのは...)

(2012 06/03 田中) 実装しました(2012SAMURAI.dayone.tanaka)。それに伴い、今までAnalysis Speedは解析ルーチンだけの時間にしてたがGetNextEventも解析時間に入れることに。

掲示板ページはじめました

(2012 03/31 近藤) 要望、Question、バグ情報などをまとめました。

XML by OpenOffice (複数X window)

入出力は下記のエントリーで問題ないが、OpenOffice(最近はlibreoffice)は同一ユーザーによる 複数アプリケーションの起動に対応していない。 さらに、複数のリモートアクセスによる複数のX windowにおいて、新しいファイルを開いたときに それぞれのX windowにフォワードできない。 つまり、同一のユーザーアカウントを使っているとOpenOfficeの奪い合いになる。 dbの編集は違うユーザーアカウントで行う、とかが妥協点かも。最悪。

XML by OpenOffice (入力)

(2012 06/08 田中) xmlの書き方で、一部のparameterに歯抜け・余分があるとはみ出したりする。 対応は大変だと思うのでユーザーが気をつけるということで。

XML by OpenOffice (出力)

(2012 06/02 田中) 出力するときに隣り合うセルの要素が同じだとだめなのを解決した。 ただし、一行目で隣り合う(ry は未対応(実際問題、そういう場合はないと思われるので無視)

calc2xml.v2.xsl

ポイントは再帰関数を使えば変数っぽいことが実装できるということ。 多分動くと思います。 (再帰関数を使っているのでものすごくでかいファイルをコンバートするときはメモリ不足とかになるかも)

パッケージ化したのが以下の通りです。

anaroot_filter.ver1.01.jar

下記のエントリーを参考にインストールください。 前のバージョンが入ってるときは何か怒られるかも知れません。

XML by OpenOffice (入出力)

(2012 04/21 近藤) OpenOfficeのCalcはどうも隣り合うセルはまとめて一つの要素としてしまう様子。そのためにある行の列の要素数が1つ少なくカウントされている。変数を定義できるとまあすぐに対応できるのだけれど、xsltでは定数しか定義できない。今のところ挫折中。

(2012 04/20 近藤) 小林君の作ったものを参考にして作って(パクって)みました。

xml2calc.xsl

calc2xml.xsl

anaroot_filter.ver1.00.jar

calc2xml.xslはほとんどどっかからパクったものです。ちゃんと中身をチェックしていませんが、とりあえずSAMURAIHOD.xmlとかちゃんと読み書きできました。

  •  

  • xml の出力で、バグが見つかったので、今のところ使いものになりません(同じ行の隣り合うセルに同じ値があると、正しく出力されない)。もう少しお待ちください。 → 上記エントリーで解決

  •  

  • OpenOffice Calc で xml を取り込むためのフィルタ (xml2calc.xsl) を XSLT で作成した。 xml を出力するためのフィルタ (calc2xml.xsl) と合わせて使うと、OpenOffice Calc で xml の読み書きができる。!Open Office では、XSLT のフィルタのパッケージを簡単に作ることができるので、anaroot_filter.ver0.02.jar という XSLT フィルタパッケージ (拡張子は .jar)を作った。以下、使い方を示す。

  • anaroot_filter.ver0.02.jar を任意のディレクトリにダウンロード

  • OpenOffice Calc を起動し、[ツール(T)] > [XML フィルタの設定...] を開く。

  • [パッケージを開く(O)] ボタンを押し、ダウンロードしてきた anaroot_filter.ver0.02.jar を開く。

  • 「XML フィルタ ' ANAROOT XML Filter' は正常にインストールされました。」というメッセージがでる。これで準備完了。
  • 次にデータの出力を行う。まず以下のようなデータを作る。変数名は必ず1行目に書く。数字のみの変数名は使えないようだ。値が入ってないセルなどがあると、うまく動かないかもしれない。sheet 名はNEBULA。複数の sheet には対応している?

A

B

C

1

ID

NAME

value

2

1

U101

3.1

3

2

U102

4.1

4

3

U103

5.1

NEBULA

  1. [ファイル(F)] > [名前を付けて保存(A)] を選択。

  2. ファイル名を test とし、ファイルの種類(T) で ANAROOT_XML xml を選択し、「選択した書式を保持(K)」で保存。

  3. 以下のような xml ファイル (test.xml) が作成される。
    • <?xml version="1.0" encoding="UTF-8"?>
      <dataroot>
      <NEBULA>
      <ID>1</ID>
      <NAME>U101</NAME>
      <value>3.1</value>
      </NEBULA>
      <NEBULA>
      <ID>2</ID>
      <NAME>U102</NAME>
      <value>4.1</value>
      </NEBULA>
      <NEBULA>
      <ID>3</ID>
      <NAME>U103</NAME>
      <value>5.1</value>
      </NEBULA>
      </dataroot>
  4. OpenOffice Calc を再起動。

  5. 次にデータの読み込みを行う。
  6. [ファイル(F)] > [開く(O)] を選択。

  7. ファイル名: test.xml, ファイルの種類(T) で ANAROOT_XML xml を選択し、開く。

XML by OpenOffice

BeyondXML を使った時のメモ。これをベースに、Openoffice で 直接 XML 形式をいじれるような XSLT ファイルを書くのも悪くないかもしれない。XSLT を書くに当たり、サンプルで覚えるXSLTプログラミング がとても参考になりそう。

  1. BeyondXML version 0.9(英語版)のダウンロード から zip ファイルをダウンロード

  2. 適当な所で展開し、中身を確認
    • $ unzip BeyondXML09_en.zip
      $ cd BeyondXML09
      $ ls
      BeyondXML-Calc-to-RNG.xsl
      BeyondXML-Calc-to-XML.xsl
      BeyondXML-Table-to-RNG.xsl
      BeyondXML-Table-to-XML.xsl
      BeyondXML-XML-to-Calc.xsl
      BeyondXML-for-Calc.xsl
      BeyondXML-for-Table.xsl
      README_BeyondXML.html
      Sample Data/
  3. Open Office Calc を起動し、[ファイル(F)] > [開(O)] で Sample Data フォルダ の CalcSample09.ods を開く。

  4. Open Office Calc の [ツール(T)] > XML フィルタの設定... を開く。

  5. 新規作成(N) ボタンを押し、[全般] タブで以下のように指定。

    • [全般] タブ
      フィルタ名(F)        BeyondXML-Calc-to-XML
      アプリケーション(F)   OpenOffice.org Calc (.ods)
      ファイルの種類名前(C) BeyondXML-Calc-to-XML
      ファイル拡張子(D)     xml
      コメント(E)  なし
      
      [変換] タブ
      DocType(A)                空白
      DTD(B)                    空白
      エクスポート用 XSLT(D)      BeyondXML-XML-to-Calc.xsl ファイルのパス
      インポート用 XSLT(F)        空白
      インポート用 テンプレート(I) 空白
  6. [ファイル(F)] > [エクスポート(T)] を選択。

  7. ファイルの種類(T) で BeyondXML-Calc-to-XML xml を選択し、保存。

  8. CalcSample09.xml が作成される。

warning messesage

エラー等はく際は
- Info
- Error
- Warn (現段階ではDebugと同等)
- Debug
を用意しているが、Infoが多くでて来ると、start()した後にうざい。
その為にWarnを準備しているが、どこかにメッセージをつめておいて、
dmesg()
みたいな事をしたらメッセージをdumpする仕様にしようかと思っている。

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 田中)

最適化

(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 (変更したいけど権限がないといって怒られる...)。

(2012/03/31 近藤)WritableGroupに加えてみました。変えられるかどうか試してみてください。

これを回す前に、

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'

と書いてもらえば完成です。

XML by Linux PC

LinuxでXMLをエクセルのように編集できるソフト誰か知りませんか?(近藤) ないとxmlは形式は使いづらい。。。 とりあえず磯部さんにxml<-->csv変換スクリプトをperlで作ってもらったので、 csvにしてOpenOffice.org 3.1.1で編集してみる。 こいつで保存すると文字列を""でくくる。まったく余計なことをしやがりますね。。。 xml2csv.plの適当なところに

$line =~ s/\"//g;# added for remove double quotation

みたいのを入れる。

ただしxml2csv.plはすべてのIDでパラメータの数が同じ場合のみ。田中君はInterruptのch用にIgnoreというパラメータをこのchだけに入れていたりするので、こういうのに対応しようとスクリプトを変えようと思うとかなり面倒。うーむ。。。やっぱりLinuxでエクセルlikeなエディタがあるとよいのですけれど。実はMACやWindowsはできる?できないのはLinuxだけ?

google documentを利用

磯部さんがgoogle documentからダウンロードするスクリプトを書いてくれたのでそれを使うまでのメモ。

  1. まずはgoogleドキュメントで適当にスプレッドシートを作成。
  2. getxml.pyを走らせるためにgdata-2.0.16.tar.gzというpythonモジュールをどっかから持ってくる。

んでrootで

python setup.py install

これで入るみたい。だけどgetxml.pyを走らせると

ImportError: No module named json

と怒られる。

yum search json

でpython-json.noarchというのがあるので yum installする。そうすると動いた!素敵です。

yum searchでpython-gdata.noarchというのも引っかかったのでこれもyumで入るっぽいです。

ANAROOTの心配?

treeなどを含むrootファイルは結構容量がある。複数の人がANAROOTを使用して皆がそれぞれrootファイルをたくさん作りだすとかなりのディスク容量が必要になるかも?

-->初めはディスクサイズを気にしないでtreeに書き出し、気になり始めたらデータを削る事を考えてはと思っている。(磯部)

ANAROOTコンパイルエラー(1)

コンパイルすると以下のようなエラーで怒られる。

make[4]: Entering directory `/home/kondo/exp/temp/anaroot/sources/Reconstruction/BigRIPS'
rootcint -f anabrips_dict.cc -c -I. -I../../.. -Iinclude -I/usr/local/src/root/root_v5.30.00/include -I../../Core/include include/TArtBeam.h include/TArtBeamPara.h include/TArtBigRIPSParameters.h include/TArtCalibPID.h include/TArtDetMap.h include/TArtFocalPlane.h include/TArtFocalPlanePara.h include/TArtIC.h include/TArtICPara.h include/TArtOptMatrix.h include/TArtPID.h include/TArtPPAC.h include/TArtPPACPara.h include/TArtPlastic.h include/TArtPlasticPara.h include/TArtRIPS.h include/TArtRIPSPara.h include/TArtTOF.h include/TArtTOFPara.h include/segidlist.h anabrips_linkdef.h
Error: cannot open file "TDOMParser.h"  include/TArtICPara.h:6:
Error: cannot open file "TXMLNode.h"  include/TArtICPara.h:7:
Error: cannot open file "TDOMParser.h"  include/TArtPlasticPara.h:6:
Error: cannot open file "TXMLNode.h"  include/TArtPlasticPara.h:7:
Warning: Error occurred during reading source files
Warning: Error occurred during dictionary source generation
!!!Removing anabrips_dict.cc anabrips_dict.h !!!
Error: rootcint: error loading headers...
make[4]: *** [anabrips_dict.cc] Error 1

anaroot/sources/Reconstruction/BigRIPS/Makefile.amに

CXXFLAGS += -I$(ROOTSYS)/io/xmlparser/inc                                       

を追加した後autogen.shなどの標準のINSTALLの手順を踏めばOK。 -->コンパイルできても動かない。

-->確か何かxml関連のパッケージをインストールしないといけないが、何を入れる必要があるか忘れちゃいました。yum search xmlでそれっぽいのを入れてみて下さい。たぶんヘッダーで関数定義は可能だが、実体を含むライブラリが無くて動かないんだと思います。(磯部)

-->rootのconfigureで--enbale-xmlを付けたらうまくいきました。その前にあらかじめxml関係をインストールしておかなくてはいけないかも。(近藤)

-->defaultで--enable-xmlかも。libxml2とlibxml2-develを入れればOKかと。 <<br>>http://root.cern.ch/drupal/content/build-prerequisites Ignoreというパラメータをこのchだけに入れていたりするので、こういうのに対応しようとスクリプトを変えようと思うとかなり面倒。うーむ。。。やっぱりLinuxでエクセルlikeなエディタがあるとよいのですけれど。実はMACやWindowsはできる?できないのはLinuxだけ?

google documentを利用

磯部さんがgoogle documentからダウンロードするスクリプトを書いてくれたのでそれを使うまでのメモ。

  1. まずはgoogleドキュメントで適当にスプレッドシートを作成。
  2. getxml.pyを走らせるためにgdata-2.0.16.tar.gzというpythonモジュールをどっかから持ってくる。

んでrootで

python setup.py install

これで入るみたい。だけどgetxml.pyを走らせると

ImportError: No module named json

と怒られる。

yum search json

でpython-json.noarchというのがあるので yum installする。そうすると動いた!素敵です。

yum searchでpython-gdata.noarchというのも引っかかったのでこれもyumで入るっぽいです。

ANAROOTの心配?

treeなどを含むrootファイルは結構容量がある。複数の人がANAROOTを使用して皆がそれぞれrootファイルをたくさん作りだすとかなりのディスク容量が必要になるかも?

--