Revision 17 as of 2012-04-20 16:33:03

Clear message
Locked History Actions

ANAROOT/掲示板

ANAROOT掲示板

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

書き込みのルール

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

TAlEncSAMURAIPla

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

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

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 03/31 近藤) 要望、Question、バグ情報などをまとめました。

XML by OpenOffice (入出力)

(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