babinfo babild -l 1 babies -l 10をしておく。プロセスが残っている場合はps ax|grep -i babiで確認してkill する。killしてもPIDファイルが残っていると駄目なのでその場合は /var/run/babiesを消す。 babirl/include/userdefine.hを定義したばあいにはそのディレクトリのrun/*。
localhost> seteflist 10 add localhost localhost Event flagment ID Hostname Nickname on/off 10 localhost localhost (on)これだけでは駄目。EFのドライバのパスを設定。
localhost> setesconfig 10 rtdrv /usr/babirl/babidrv ID : 10 erport : 17601 erhost : localhost hd1 : 0 hd1dir : ./ hd2 : 0 hd2dir : ./ isdrv : 0(Error in driver dir) rtdrv : ./ connect : 0 ID : 10 erport : 17601 erhost : localhost hd1 : 0 hd1dir : ./ hd2 : 0 hd2dir : ./ isdrv : 1 rtdrv : /usr/babirl/babidrv connect : 0パスがあっていないとisdrvにErrorとでる。/usr/babil/babidrv/以下にはあ らかじめstartup.c/evt.c/stop.c/clear.c/sca.cを編集しておき、コンパイル しておく。 これでnsstaなどができる。ONLINE解析をしたい場合にはさらにUDP Clientを 登録する。
localhost> setclinfo 0 add localhost UDP Client list ID : HOSTNAME 0 : localhost (SHMID = 0)ここでの0は自分で決めてよいとおもわれ。 これでANAPAWなどでONLINEデータが見えるはず。 raw dataファイルの保存先はsethdlistで設定できる。 以上の様にbabiconで設定したことはbabirl/init/* に保存され、一旦babicon を終了してもう一度立ち上げた時にも同じ設定になる。
vme_enable_interrupt();などとあって、この中は
void sbs620_enable_interrupt(void){ writeb(SBS620_CLEAR_INTERRUPT,vreg[0].csr + SBS620_LOCAL_COMMAND); writeb(SBS620_ENABLE_INTERRUPT,vreg[0].csr + SBS620_INT_CTRL); }ここでの0は何番目のcrate controllerかというID。つまり1(というか0)番目。 interruptを掛けるのはは1台なので、これを0番のクレートにすればよい。 なのでstartup.c、evt.cは以下のようにかく。
void startup(void){ /* Startup Function */ //---------------------------------------------------------- // define interrupt level of SBS620 vme_define_intlevel(INTLEVEL); . . .evt.c
void evt(void){ /* Event */ vme_read_intvector(); init_event(); //---------------------------------------------------------- init_segment(MKSEGID(SAMURAI,F1,NEBULAT,V792)); v7XX_segdata_i(TDCADDR0,TDC_CRATE); . . . end_segment(); //---------------------------------------------------------- init_segment(MKSEGID(SAMURAI,F1,NEBULAA,V792)); v7XX_segdata_i(QDCADDR0,QDC_CRATE); . . . end_segment(); }これでめでたく2つのクレートを読む事ができました。
exp/ -- test2011aug/ -- analysis/ -- anapaw/ -- src/ | | | | -- himac/ | | -- Setup/ | | | | | -- user/ -- nebula/ . | | . | -- src/ . | | | -- analogin (-> anapaw/Setup/setupanapaw) -- babirl/ | . . .anapaw本体は実験ディレクトリ(test2011aug)の下におく。anapaw本体 は変更しないけど、Setupディレクトリがanapaw以下にあり、これは実験 毎に変更する。setupanapawを実験毎に作っても管理できるけど、ディレクト リで分けたいのでこうした。
cd exp/test2011aug/analysis source analogin nebulaもしくは
. analogin nebulaで。./analoginはだめ。
# # define common part # category 16 name NEBULA device 2 focal 1 detector 41 # # GEO SigType Ch_start ID_start NumOfCh # (Tu/Td/..) (from 0) (from 1) 11 Tu 0 1 15 11 Td 16 1 15 21 Au 0 1 15 21 Ad 16 1 15を作っておき、
[nebula@nebula01 mkmap]$ ./mkmap temp.txt 16 1 2 1 41 11 0 2 1 41 11 16 2 1 41 22 0 2 1 41 22 16 ;NEBULA-1 16 2 2 1 41 11 1 2 1 41 11 17 2 1 41 22 1 2 1 41 22 17 ;NEBULA-2 16 3 2 1 41 11 2 2 1 41 11 18 2 1 41 22 2 2 1 41 22 18 ;NEBULA-3 16 4 2 1 41 11 3 2 1 41 11 19 2 1 41 22 3 2 1 41 22 19 ;NEBULA-4 . . .という具合です。一応チェック機能をつけました。同じID、Tuなどの情報があっ たり、同じ回路に別の信号が入っていると怒ります。 NEBULA用に作ったけど少し改造すれば汎用的につかえるはず。
[nebula@nebula01 babidrv]$ cmdvme-i 2 -wr 0x38000004 3820010c3820はModule ID、01がMajor revision、0cがMinor revisionらしいです。 sis3820のmanual、p21をみるとMajor revision 0x01はGeneric SIS3820 32 channel scaler designだそうです。