東京工業大学 >
大学院理工学研究科 >
基礎物理学専攻 >
中村研究室 >
メンバー >
Takayuki Sako >
PAW/ANAPAWのTipsTips List
analogonANAPAWは起動時にワーキングディレクトリの.analogon.kumacを読み込んでいる。 今は.analogon.kumacには
defaults $ANAPAW_MACROS
とだけ書いてある。実体のinitialize.kumacは
exec kumac/initialize.kumac macro initialize host_pager less host_editor 'emacs -nw' option fit option grid set fit 111 set vsiz 0.25 set tsiz 0.34 set tfon -20 set gfon -60 set lfon -600 set vfon -20 set cfon -20 set xlab 1.2 set ylab 0.6 set yhti 0.95 set ncol 58 pal 1 set htyp -3 set lfon -132 size 18 24 opt date opt sta opt ZFL1 opt tic opt nbox opt htit set stat 1110001 set fcol 2 set fwid 7 set hwid 5 set bwid 7 set hcol 10418 set htyp 2 color 8 1 1 1 set chhe 0.28 set MTYP 20 set PMCI 1 filecase keep exec ini_alias global/create current_ana global/create current_anafile global/create current_runNO current_anafile = 0 current_ana = 0 current_runNO = 0 return 画像(.ps, .eps)を保存する→pic/priPAWのメモリーサイズを増やすPAW(ANAPAW)を使っているとヒストグラムが多くなったときに
Not enough space in memory
と表示されてそれ以上ヒストグラムが生成されなくなることがある。この回避を行う。
メモリー不足に対してはPAWのオフィシャルな方法が存在する( How to rebuild PAW with a larger memory ?)が、今回はANAPAW上での回避方法を示す。 背景PAWはmemory management and I/OにZEBRAを使っており、この中でNWPAWというパラメーターがPAWのメモリーサイズを決めている。 したがって、このパラメーターを書き換えてコンパイルし直せばエラー不足のメッセージは回避できる(この辺の理解は適当。間違っている部分もあるかも)。ANAPAWでのNWPAWANAPAWの場合は
~/usr/local/anapaw/src/anapaw.f
の中でNWPAWが記述されている。デフォルトでは下記のような感じ。
PROGRAM ANAPAW PARAMETER (NWPAW=10000000) COMMON/PAWC/PAWCOM(NWPAW) CHARACTER*256 ANALOG CHARACTER*80 BATCHF,PAWLOGF EXTERNAL ASTOP EXTERNAL PAEXIT CALL GETENV('ANALOGON',ANALOG) CALL PAWINT1('PAW',BATCHF,PAWLOGF) CALL PAWINT2(NWPAW,' ',PAEXIT,IWTYP) CALL PAWINT3 CALL PAWINT4(PAWLOGF) CALL ANAMNU CALL ANATITLE(BATCHF) CALL ASTART CALL AINIT CALL KUEXEC('SET/PROMPT ''ANAPAW>''') CALL KUEXEC('EXEC '//ANALOG) CALL KUEXIT(ASTOP) CALL KUQUIT(ASTOP) IF (BATCHF .NE. ' ') THEN CALL KUEXEC('EXEC '//BATCHF) CALL PAEXIT STOP ENDIF CALL KUWHAG CALL PAEXIT
makelib
すれば良い。makeana ちなみにanapaw.fとHow to rebuild PAW with a larger memory ?のpamain.fを見比べるとanapaw.fがpamain.fを内含していることが分かる。 問題点上の方法でメモリー不足は解消できるが、以下のようにヒストグラムを表示しようとするときに ANAPAWがアボートすることがある。全く同じソース、データでもNWPAWを変えるだけで落ちる・落ちないが変わるのでPAW,もしくはANAPAWそのものの問題と考えられるが原因は今のところ分かっていない。gdbを使うとPAW本体で落ちているように見えるものの、それ以上の追跡はしていない。
ANAPAW/EVTLOOP> ht 114
デフォルトの値を利用する限りは問題ない。
> ht 114 Floating Exception Aborted プロンプト表示を変更する。デフォルトでは以下のように表示される。ANAPAW> cba neut140 140 ANAPAW-M : All definitions were cleared. rdf/0140.rdf Size : 96.3 MB Block : 6163 ANAPAW/EVTLOOP> start
~/usr/local/anapaw/src/anapaw.f
で
CALL KUEXEC('SET/PROMPT ''ANAPAW>''')
を
CALL KUEXEC('SET/PROMPT ''A>''')
に変更。EVTLOOPについては
~/usr/local/anapaw/src/common.f
で
Character*16 CHPRMPT
を
(中略) Parameter (CHPRMPT='ANAPAW/EVTLOOP>')
Character*5 CHPRMPT
に変更。後は
(中略) Parameter (CHPRMPT='A/E>')
makelib
するだけ。これで
makeana A> cba neut140 140 ANAPAW-M : All definitions were cleared. rdf/0140.rdf Size : 96.3 MB Block : 6163 A/E> start 上付き文字/下付き文字上付き文字
'^ue!normal'
下付き文字
'?shita!normal'
!は効果を打ち消す
二次元ヒストグラムのz軸の最大値・最小値を設定する二次元ヒストグラムのz軸の最大値・最小値を設定するにはmaximum,minimumを使えば良い。PAWのhelpには明確にy軸を設定すると書いてあるが、二次元ヒストグラムの場合はz軸の設定が行われる。 z軸をlogでプロットする際には
PAW> min 0 0.1
がよく利用される。
ヒストグラムのタイトルを書き換えるヒストグラムのタイトルを書き換えるにはhistogram/copyを利用すれば良い。オフィシャルのFAQ : How to change the histogram title drawn by H/PLOT ? ではtitle_globalを使うことになっている。 つまり、オプションUTITをONにしてUオプション付きのtitle_globalで ヒストグラムの下にグローバルタイトルを設定するという方法だ。
PAW> opt utit
PAW> title NEW_title U PAW> hi/plo 30000
PAW> opt utit
としてしまえば良い(もちろん全てのヒストグラムのタイトルが消えることになる)。
PAW> title ana/loop中にヒストグラムを自動更新する通常、ana/loopの後、startするとデータを読み込んでいる間は既に表示しているヒストグラムがそのまま画面に表示されている。 だが、startする前に予めhst1を使っておくとana/loop中でもヒストグラムが自動更新されて表示される。 地味に便利。コマンドを一行で打つANAPAWに限らないが、;(セミコロン)を使うことでコマンドは一行で打つことができる。 例えば
ANAPAW> cle f ; book ana/filename.ana ; a/l
など。こうすると上キーを押して履歴を辿るのが早くなる。結果的に効率が上がる。
ディレクトリ構造Ubuntu9.04/9.10にanapawをインストールする方法のメモでインストールしたときのディレクトリ構造。$HOME ├/usr : 以下、ANAPAW本体 | └/local | ├anapaw -> anapaw_**** : 以下2つのどちらかへのシンボリックリンク | ├/anapaw_ridf : RIBF ver | └/anapaw_v-2-3-1 : RIBFでないver | ├/Setup | | ├setana | | ├setupanapaw | | ├setlocal | | ├analogon.kumac | | … | ├/src : ANAPAW本体のソース | | ├Makefile | | … | ├/Macros | … ├/exp : 以下、実験毎、ユーザー毎のファイル … ├/dayone : RIBF ver 用 | └/users | ├ … | … └/nebulatst : RIBFでないver用 ├/src : ユーザー毎のソース | ├Makefile | ├enc*** | … ├/ana ├/cut ├/kumac … .analogon.kumacANAPAWは起動時に.analogon.kumacを読み込む。上記の環境ではここにある。
/home/rips/exp/nebulatest/.analogon.kumac
中身を見てみるとv2_3_1のデフォルトならば
less /home/rips/exp/nebulatest/.analogon.kumac
となっている。
ここに例えば
defaults $ANAPAW_MACROS host_psview gv option fit option grid set fit 111 set vsiz 0.25 set tsiz 0.34 set tfon -20 set gfon -60 set lfon -600 set vfon -20 set cfon -20 set xlab 1.2 set ylab 0.6 set yhti 0.95 graphics/viewing/size 18. 18. set ncol 28 pal 1 set htyp -3 set hcol 1012 exec ini_alias
opt sta
を加えておくと統計の情報(ID,Entries,Mean,RMS)がデフォルトで表示されることになる。
色々いじった結果、現在使っている.analogon.kumacは
defaults $ANAPAW_MACROS
この.analogon.kumacによる出力サンプルは
host_pager less option fit option grid set fit 111 set vsiz 0.25 set tsiz 0.34 set tfon -20 set gfon -60 set lfon -600 set vfon -20 set cfon -20 set xlab 1.2 set ylab 0.6 set yhti 0.95 set ncol 58 pal 1 set htyp -3 set lfon -132 size 18 24 opt date opt sta opt ZFL1 opt tic opt nbox set stat 1110001 set fcol 2 set fwid 7 set hwid 5 set bwid 7 set hcol 10418 set htyp 2 color 8 1 1 1 min 0 0.5 lgz filecase keep exec ini_alias cutanaファイル中でgateのファイルを読み込むときスペースを挟んではならない。
xygate
ではgateを正しく読み込まない。@, cut/anapaw.cut
xygate
ならOK
@,cut/anapaw.cut ini_alias.kumacini_alias.kumac.analogon.kumac.analogon.kumacRIBF-55(2010)exp のshift_watch.kumacRIBF-55(2010)exp の shift_watch.kumac実験中に適当に書いたもの。色々ひどい。 macro shift_watch [IDtemp] global/create ID global/create scale global/create histMax global/create dir histMax = 12 dir = ./ps/shift if [IDtemp] .eq. '' then message message please input run NO ! message exitm endif ID = [IDtemp] * lnz * scale = 'linear' * exec main * * wait lgz scale = 'log' exec main mes 'print out ?' wait * scale = 'linear' * do i=1,[histMax] * sh pwd * sh ps2pdf [dir][ID]_[i]_[scale].ps [dir][ID]_[i]_[scale].pdf * sh lpr -Pbripslw2 [dir][ID]_[i]_[scale].pdf ** sh lpr [dir][ID]_[i]_[scale].pdf * enddo scale = 'log' do i=1,[histMax] sh pwd sh ps2pdf [dir][ID]_[i]_[scale].ps [dir][ID]_[i]_[scale].pdf sh lpr -Pbripslw2 [dir][ID]_[i]_[scale].pdf * sh lpr [dir][ID]_[i]_[scale].pdf enddo return macro main import * size 18 24 opt date opt sta zone 2 3 set ygti 1.0 set gsize 0.6 * 1 num = 1 pson [dir][ID]_[num]_[scale].ps title run[ID] ht 101 colz hn colz hn colz do i = 1,3 hn colz do j = 1,6 exec dlx [j]+0.5 enddo enddo do i = 4,6 sel [i]*10 itx 1.8 2500 F3 itx 2.65 2500 F5-1 itx 3.65 2500 F5-2 itx 4.8 2500 F7 itx 5.8 2500 F8 itx 6.7 2500 F11 enddo sel 1 itx 2 23 shift[num] itx 3.5 23 [scale] psoff num = [num] + 1 wait * 2 pson [dir][ID]_[num]_[scale].ps title run[ID] hn colz do j = 1,6 exec dlx [j]+0.5 enddo itx 1.8 2500 F3 itx 2.65 2500 F5-1 itx 3.65 2500 F5-2 itx 4.8 2500 F7 itx 5.8 2500 F8 itx 6.7 2500 F11 hn colz opt nsta zone 1 3 2 s hn colz exec dlx 2.5 exec dlx 4.5 exec dlx 8.5 exec dlx 9.5 exec dlx 13.5 exec dlx 14.5 exec dlx 18.5 exec dlx 22.5 exec dlx 26.5 exec dlx 30.5 hn colz exec dlx 2.5 exec dlx 4.5 exec dlx 8.5 exec dlx 9.5 exec dlx 13.5 exec dlx 14.5 exec dlx 18.5 exec dlx 22.5 exec dlx 26.5 exec dlx 30.5 do i = 3,4 sel [i]*10 itx 1.2 4500 F1 itx 3 4500 F2 itx 6.1 4500 F3 itx 8.6 4500 F4 itx 11.2 4500 F5 itx 13.7 4500 F6 itx 16.2 4500 F7 itx 20.2 4500 F8 itx 24.2 4500 F9 itx 27.7 4500 F10 itx 32.2 4500 F11 enddo sel 1 itx 2 23 shift[num] itx 3.5 23 [scale] psoff wait num = [num] + 1 * 3 pson [dir][ID]_[num]_[scale].ps title run[ID] zone 1 3 do i = 1,3 hn colz exec dlx 2.5 exec dlx 4.5 exec dlx 8.5 exec dlx 9.5 exec dlx 13.5 exec dlx 14.5 exec dlx 18.5 exec dlx 22.5 exec dlx 26.5 exec dlx 30.5 enddo do i = 1,3 sel [i]*10 itx 1.2 4500 F1 itx 3 4500 F2 itx 6.1 4500 F3 itx 8.6 4500 F4 itx 11.2 4500 F5 itx 13.7 4500 F6 itx 16.2 4500 F7 itx 20.2 4500 F8 itx 24.2 4500 F9 itx 27.7 4500 F10 itx 32.2 4500 F11 enddo sel 1 itx 2 23 shift[num] itx 3.5 23 [scale] psoff opt sta num = [num] + 1 *** zone 2 3 do j = [num],[histMax] wait pson [dir][ID]_[j]_[scale].ps title run[ID] do i=1,6 hn colz enddo sel 1 itx 2 23 shift[j] itx 3.5 23 [scale] psoff enddo return macro dly xmin = $GRAFINFO('WNXMIN') xmax = $GRAFINFO('WNXMAX') if $OPTION('LOGX') = 1 then xmin = $sigma(10**([xmin])) xmax = $sigma(10**([xmax])) endif do i = 1,[#] dline [xmin] [xmax] [[i]] [[i]] enddo return macro dlx ymin = $GRAFINFO('WNYMIN') ymax = $GRAFINFO('WNYMAX') if $OPTION('LOGY') = 1 then ymin = $sigma(10**([ymin])) ymax = $sigma(10**([ymax])) endif do i = 1,[#] dline [[i]] [[i]] [ymin] [ymax] enddo return shift422_2_log.pdf マクロ→ ANAPAW マクロ |