東京工業大学 >
大学院理工学研究科 >
基礎物理学専攻 >
中村研究室 >
メンバー >
Takayuki Sako >
SOLVisualizer for ANAPAW ManualANAPAWで解析した位置情報を受け取って表示する3D Viewer つまりはANAPAW用のEvent Display. SOLVisualizerをANAPAW用に手直ししたもの。 開発環境
仕様開発中につき仕様は度々変更しているが、現状以下のような機能を持つ。
ソースANAPAW本体用ANAPAWユーザーソース用SOLVisualizer本体を含む。まだとりあえず動くというレベルのα版。 ディレクトリ構造黄色が新たに追加/変更されるべきファイル。赤はSOLVisualizerの実行(厳密に言うと改造したANAPAW)により自動的に生成されるファイル。 ANAPAW本体ソース$ANAPAW_HOME/ tree . |-- Documents |-- Macros | `-- ini_alias.kumac |-- Setup |-- lib `-- src |-- Makefile |-- SVAsource.f |-- SVAsourceValiable.inc |-- ,,, |-- anafill.f |-- ,,, `-- vana ANAPAWユーザーソース$ANAPAW_WORK/ tree . |-- ana |-- bin |-- cut |-- evs |-- hbk |-- kumac | `-- visualizer.kumac |-- last.kumacold |-- ntpl |-- rdf |-- setlocal.bash |-- src | |-- Makefile | |-- SVA | | |-- SOLVisualizer | | | |-- Makefile | | | |-- SOLVisualizer | | | |-- SOLVisualizerANAPAW.cpp | | | |-- SOLVisualizerANAPAW.o | | | |-- Visualizer | | | |-- trackball.cpp | | | |-- trackball.h | | | |-- trackball.o | | |-- SVAconfig.ini | | |-- SVAsubroutine.f | | |-- SVAvaliable.inc | | `-- result | | |-- SVACurrentStatus.txt | | |-- rdf_xxx_rdf-ana_yyy_ana.det | | |-- rdf_xxx_rdf-ana_yyy_ana.glt | | `-- rdf_xxx_rdf-ana_yyy_ana.tra | |-- add_ntuple.f | |-- anapaw | |-- anapaw_d | |-- enc_sample.f | |-- sample.prm | `-- SVAPosition_prm.f `-- txt インストールANAPAW本体ソース
visualizer.kumacANAPAW_HOME/Macros/にvisualizer.kumacを入れておく。ini_alias.kumacini_alias.kumacに以下の行を追加。
alias/create sol 'exec visualizer'
これでANAPAWからコマンド"sol"でSOLVisualizerを起動できる。
ANAPAWユーザーソース
動作の流れ
注意事項できるだけCOMMONブロックを使わずに書いたものの、一部COMMONブロックを使っている。 これはANAPAW本体とユーザーソースとの間でデータやり取りするため。COMMON/SVACOMMON/というブロックである。これが他と重複しないよう注意。 設定以下を仮定している。
ユーザーソース用のサブルーチンencが読み込むSVAsubroutine.fの説明。ユーザーがいじるべき(代入すべき)変数を赤で表示する。 SVAEnviromentSet環境の設定。解析毎に1回だけ読み込む。特にいじる必要はない。SVAStartLoop1イベントに対して1回だけ読み込む。ループが回る直前に書く。直後では×。SVADetectorSet検出器のジオメトリを設定する。
SVADetectorSet
(SVA_DetectorFile,
SVA_DetectorID, SVA_DetectorCluster,
SVA_x_center, SVA_y_center, SVA_z_center, SVA_x_length, SVA_y_length, SVA_z_length )
SVAParticleWrite粒子の位置情報を出力する。
SVAParticleWrite
(SVA_TrackingFile, SVA_x, SVA_y, SVA_z, SVA_t)
GUIの説明(filename)実行時のコマンドの第一引数。 現在表示しているファイルの名前を表示している。 ここでanaファイル名とrdf(ridf)ファイル名を確認できる。Save as .pngキーボード・ショートカット : p現在表示している画面をpngとして保存する。 ファイル名は filename_101.png 以降、このコマンドを実行する毎に102,103…と連番で出力される。 SOLVisualizerANAPAWの実行の度に番号は初期化されるので、同じファイルを読み込んでこのコマンドを実行するとpngが上書きされるので注意。 また、SOLVisualizerANAPAWのウィンドウ上に他のXウィンドウがあると正しく画面をキャプチャできないので注意。 Gate IDanaファイルに記述したゲートIDを選択する。すると選択したゲートに対応したイベントのみトラッキングされる。 デフォルトは"0"(Ungate)。 ゲートの数が非常に多いときはうまく操作できなくなるという既知の問題がある。 対処法はあるが今のところ放置。Initializeキーボード・ショートカット : i視点、位置をデフォルトに戻す。 変な方向を向いてしまったときに役立つ。 Exitキーボード・ショートカット : ESC , qSOLVisualizerを終了する。 Aboutバージョン情報などの出力。 ポップアップウィンドウの×印をクリックするとポップアップウィンドウが消えるのではなくSOLVisualizer全体が終了するので注意。 ポップアップウィンドウを消すときは必ずポップアップウィンドウの"Exit"をクリックする。トランスレーションパネル XY,Zキーボード・ショートカット : WASD、↑↓→←、PageUP、PageDownマウスでドラッグすると位置が動く。 Shiftを押しながらだと速く動く。 (画面上をドラッグ)視点の移動。視点制御(本質的には物体の回転制御)にはクォータニオンを利用している。 クラスターパネルdisplay表示する/しないRGB色をRGB0-255で調整できる。Alpha透明度を0-100で調整できる。Z-buffetingがOFFの時のみ有効 Solid/Wire
Outline黒い輪郭線を表示する/しない Solidのときのみ有効。Particle パネルDisplay粒子を表示する/しないデフォルトはOFF Gated number現在のゲートに対応したイベント数を表示する/しないDisplayがONの時のみ有効 デフォルトはON 文字色はトラッキングの線と共通 Ungated"0"ゲート(Ungated)の粒子数を増減する。RGB色をRGB0-255で調整できる。Alpha透明度を0-100で調整できる。Z-buffetingがOFFの時のみ有効 Width線の太さを調節する。Background パネルRGB背景色をRGB0-255で調整できる。Optionその他細かいオプション。Z-buffetingZバッファを有効にする/しないSOLVisualizerは負荷軽減のためZソートを行っていない。 そのため、デフォルトではZバッファを有効にしてデプスの情報を扱っている。 この場合はアルファブレンディングが無効になる(半透明で表示されなくなる)。 一方、Zバッファを無効にすれば半透明表示が可能になるが、 デプスの情報が正しくなくなる(奥にあるはずの物体が手前に表示される)。 Information各種情報を画面上に表示するfps : フレームレート。但し、正確ではない。 Debug Modeデバッグモード。ONにするとデバッグ用の情報が出力される。ターミナルが一気に流れるので注意。 余談便宜上SOLVisualizer "for ANAPAW"としているが別にANAPAW専用とは限らない。 単にファイル形式さえ揃っていれば他の解析ソフトにも対応できる。 ROOTに対応させることも容易であろう。でも、そもそもそういうアプリケーションがROOT用なら世の中には転がっているはず。一方でANAPAWにはそのような可視化の手段が(自分の知る限りでは)無かったので大学の停電期間中に息抜きで作ってみた。 ヒストグラムしか表示できず、検出器のジオメトリや粒子のトラッキングを直感的に確認する術が無いのはどうなの?と常々思っていたという理由もある。 その結果がSOLVisualizer for ANAPAW 参考文献以下のサイトには大変お世話になりました。
|