東京工業大学 >
大学院理工学研究科 >
基礎物理学専攻 >
中村研究室 >
メンバー >
Takayuki Sako >
ANAPAW 自作コマンド自作したANAPAWのコマンド。このページはusersrcやマクロではなくANAPAW本体に手を加えるものである。 Command List
現在のヒストグラムIDを取得する : CID現在のヒストグラムIDを返すコマンドを作ってマクロ(.kumac)からその値を取得する。ANAPAW本体のディレクトリ構造手を加えるのは黄色の部分。
~/usr/local/anapaw$ tree
.
|-- Documents
| |-- ChangeLog
| |-- HOWTO
| |-- INSTALL
| `-- README
|-- Macros
| |-- bandx.kumac
| |-- bandy.kumac
| (省略)
| |-- xyblow.kumac
| `-- yblow.kumac
|-- Setup
| |-- analogon.kumac
| |-- setana
| |-- setana.bash
| |-- setlocal
| |-- setlocal.bash
| |-- setup.exp
| |-- setup.exp.bash
| |-- setup.local
| |-- setupanapaw
| |-- setupanapaw-free
| |-- setupanapaw.bash
|-- lib
| |-- anapaw.o
| `-- libanalib.a
`-- src
|-- Makefile
|-- ainit.f
|-- ainit.o
|-- anaact.f
|-- anaact.o
|-- anabatch.f
|-- anabatch.o
|-- anaeff.f
|-- anaeff.o
|-- anaevent.f -> anaevent_riken.f
|-- anaevent.o
|-- anaevent_nscl.f
|-- anaevent_riken.f
|-- anafill.f
|-- anafill.o
|-- anainit.f
|-- anainit.o
|-- anamnu.f
|-- anamnu.o
|-- anapaw.f
|-- anaread.f
|-- anaread.o
|-- anasub.f
|-- anasub.o
|-- anasub2.f
|-- anasub2.o
|-- anasubc.c
|-- anasubc.o
|-- anasubplot.f
|-- anasubplot.o
|-- anasubutil.f
|-- anasubutil.o
|-- astart.f
|-- astart.o
|-- astop.f
|-- astop.o
|-- bbcpri.c
|-- bbcpri.h
|-- bbcpri.o
|-- common.f
|-- common.inc -> common_riken.inc
|-- common_nscl.inc
|-- common_riken.inc
|-- dumpdata.c -> dumpdata_riken.c
|-- dumpdata.o
|-- dumpdata.txt
|-- dumpdata_nscl.c
|-- dumpdata_riken.c
|-- getblock.c -> getblock_riken.c
|-- getblock.o
|-- getblock_nscl.c
|-- getblock_riken.c
|-- getevt.c -> getevt_riken.c
|-- getevt.o
|-- getevt_nscl.c
|-- getevt_riken.c
|-- ntuple_io.f
|-- ntuple_io.o
|-- setnscl
|-- setriken
`-- vana
|-- Makefile
|-- viewana
`-- viewana.c
sudo apt-get install tree
anamnu.fanamnu.fのGPROの項の直後、KUCMD('..',' ','SW')の前に新たなコマンドCIDについての記述を加える。ちなみにここでの記述がhelpで参照するときの文章になる。 変更前
C /ANALYS/HISTOGRAM/GPRO - COMMAND -
CALL KUCMD(' ','GPRO','C')
CALL KUPAR('GPRO','CUTID','CUT ID ','IO','S')
CALL KUPVAL('GPRO','CUTID',0,0.,' ','D')
CALL KUPAR('GPRO','CUTNAME','Cut File name','CO','S')
CALL KUPVAL('GPRO','CUTNAME',0,0.,' ','D')
CALL KUPAR('GPRO','COPT','Window Option','CO','S')
CALL KUPVAL('GPRO','COPT',0,0.,'M','D')
CALL KUPVAL('GPRO','COPT',0,0.,'M,S,OPT','V')
CALL KUPVAL('GPRO','COPT',0,0.,' Main Window','-M')
CALL KUPVAL('GPRO','COPT',0,0.,' Scatter Window','-S')
CALL KUPVAL('GPRO','COPT',0,0.,' HPLOT Option','-OPT')
GuID(1)=' Project Contents to 2D-Hist gated with cut.'
GuID(2)=' '
CALL KUGuID('GPRO',GuID,2,'S')
CALL KUACT('GPRO',ANAACT)
CALL KUCMD('..',' ','SW')
変更後
C /ANALYS/HISTOGRAM/GPRO - COMMAND -
CALL KUCMD(' ','GPRO','C')
CALL KUPAR('GPRO','CUTID','CUT ID ','IO','S')
CALL KUPVAL('GPRO','CUTID',0,0.,' ','D')
CALL KUPAR('GPRO','CUTNAME','Cut File name','CO','S')
CALL KUPVAL('GPRO','CUTNAME',0,0.,' ','D')
CALL KUPAR('GPRO','COPT','Window Option','CO','S')
CALL KUPVAL('GPRO','COPT',0,0.,'M','D')
CALL KUPVAL('GPRO','COPT',0,0.,'M,S,OPT','V')
CALL KUPVAL('GPRO','COPT',0,0.,' Main Window','-M')
CALL KUPVAL('GPRO','COPT',0,0.,' Scatter Window','-S')
CALL KUPVAL('GPRO','COPT',0,0.,' HPLOT Option','-OPT')
GuID(1)=' Project Contents to 2D-Hist gated with cut.'
GuID(2)=' '
CALL KUGuID('GPRO',GuID,2,'S')
CALL KUACT('GPRO',ANAACT)
C /ANALYS/HISTOGRAM/CID - COMMAND -
CALL KUCMD(' ','CID','C')
GuID(1)=' Print Current HID'
GuID(2)=' '
CALL KUGuID('CID',GuID,2,'S')
CALL KUACT('CID',ANAACT)
CALL KUCMD('..',' ','SW')
anaact.fCHBINに関する記述とSTATUSの間にCIDとコマンドを打ったときにサブルーチンDISPLAYCIDを呼び出すように設定する。変更前
ElseIf (CMD(3) .EQ. 'CHBIN') Then
Call KUGETI(BF)
c write(*,*)'bf ',bf
If(BF.LT.1)BF=1
HID = DispID(DseqID)
Call HGIVE(HID,temptitle,
& TMPNX,TMPRXMI,TMPRXMA,
& TMPNY,TMPRYMI,TMPRYMA,
& TMPNWT,TMPLOC)
c write(*,*)hid,tmpnx,tmprxmi,tmprxma,
c & tmpny,tmprymi,tmpryma,tmpnwt,tmploc
Call HXI(HID,TMPRXMI,TMPXMI)
c write(*,*)'1 ',hid,tmprxmi,tmpxmi
Call HXI(HID,TMPRXMA,TMPXMA)
c write(*,*)'2 ',hid,tmprxma,tmpxma
NBINS = int((TMPXMA-TMPXMI)/BF)
c write(*,*)'nbins ',nbins
Call CHBIN(BF,NBINS)
EndIf
ElseIf (CMD(2) .EQ. 'STATUS') Then
Write(*,*)' '
変更後
ElseIf (CMD(3) .EQ. 'CHBIN') Then
Call KUGETI(BF)
c write(*,*)'bf ',bf
If(BF.LT.1)BF=1
HID = DispID(DseqID)
Call HGIVE(HID,temptitle,
& TMPNX,TMPRXMI,TMPRXMA,
& TMPNY,TMPRYMI,TMPRYMA,
& TMPNWT,TMPLOC)
c write(*,*)hid,tmpnx,tmprxmi,tmprxma,
c & tmpny,tmprymi,tmpryma,tmpnwt,tmploc
Call HXI(HID,TMPRXMI,TMPXMI)
c write(*,*)'1 ',hid,tmprxmi,tmpxmi
Call HXI(HID,TMPRXMA,TMPXMA)
c write(*,*)'2 ',hid,tmprxma,tmpxma
NBINS = int((TMPXMA-TMPXMI)/BF)
c write(*,*)'nbins ',nbins
Call CHBIN(BF,NBINS)
ElseIF (CMD(3) .EQ. 'CID') Then
Call DISPLAYCID()
EndIf
ElseIf (CMD(2) .EQ. 'STATUS') Then
Write(*,*)' '
anasubplot.fanasubplot.fの一番最後にDISPLAYCIDの本体を記述する。
c =================================================================
Subroutine DISPLAYCID()
Include 'common.f'
HID = DispID(DSeqID)
open(98, file='./CurrentHID.txt', status='replace')
write(98,*) HID
close(98)
write(*,*) 'Current HID :' , HID
return
end
c =================================================================
HID = DispID(DSeqID)
の一行である。これを./CurrentHID.txtに書き込むようにしている。
新たなコマンドCID後はmakeすれば
makelib
新たなコマンドCIDが使えるようになる。
makeana
ANAPAW> cid
> cid
Current HID : 101
ANAPAW> i
> i
===> Histogram List
# HID Kind Title
-> 1 101 (2) NEBULA
ANAPAW> sh less CurrentHID.txt
> sh less CurrentHID.txt
101
現在のヒストグラムIDを返すマクロ read_cidANAPAWのワーキングディレクトリ配下のkumac/に以下のread_cid.kumacを作る。read_cid.kumacmacro read_cid cid v/del Current_HID v/cre Current_HID(1) 'I' v/read Current_HID(1) ./CurrentHID.txt return Current_HID(1) read_cidを使って現在のヒストグラムIDを取得
HID = $exec(kumac/read_cid)
とするとHIDに現在のヒストグラムIDが格納される。
応用ここまでの下準備によりマクロを作った際に現在のヒストグラムIDを簡単に取得できるようになったので色々遊べる。 マクロについてはマクロのページに。EVTLOOPの時のコマンドを簡略化 : s通常はANAPAW> a/l ANAPAW-M : All definitions were cleared. rdf/0117.rdf Size : 61.2 MB Block : 3919 ANAPAW/EVTLOOP> start anasub.fディレクトリ構造src配下のanasub.fを以下のように書き換える。変更前1053 ElseIf (CKEY .eq. 'START' .OR. CKEY .EQ. 'start' )Then 変更後
1053 ElseIf (CKEY .eq. 'START' .OR. CKEY .EQ. 'start'
1054 & .OR. CKEY .eq. 's' .OR. CKEY .eq. 'S')Then
以上のように変更すればa/lでループを回す際に「s」と打つだけで実行できるようになる。 ファイル |