中村研実験室のDAQシステムが動作しているかを確認する手順を書いたおぼえがき。ここでは、線源を使わず宇宙線を測定することを考え、検出器からの信号は、十分に少ないと仮定する。取得したデータはANAPAWでヒストグラムにする。babarl DAQについては、を参照。
(書いたことをあまり見直していないので、間違いがたくさんあると考えられる。)
使用する装置は、次のとおり。ADCは、CAMAC Crateのステーションナンバー3番(左から3番目のところ)に入っていると仮定する。
種類 | 略称 | 品番/品名 | 備考 |
---|---|---|---|
パソコン | PC | ||
CAMAC クレート | CAMAC Crate | CAMAC moduleの入れ物 | |
クレートコントローラ | Crate Ctrl. | ||
ハイボルサプライ | HV | ||
ゲート&ディレイジェネレータ | Gate Gen. | ||
Analog to Digital Converter | ADC | ||
100ns Delay | 100ns Delay | ||
ホドスコープ | Det. | 中村研制作 |
NBBQのbabarlDAQモードを用いて、DAQを行う。NBBQ(Neo bb DAQ)とはRTlinuxでない普通のLinux上でも動くお手軽DAQシステム。検出器のテストなどのDead Timeを気にしないDAQに向く。
NBBQの使い方はに書いてあるが、ここでは手順を詳しく書く。また、ステーションナンバー3番にADCを入れたと仮定する。
$ cd ~/ $ mkdir test
$ cd ~/test $ nbbqcpy $ ls # コピーできたか確認 Makefile bbdaq.c def-advme.h evt.c sca.c v775.c v792.h bb-camac.h bbmodules.h def-cc77.h nbbqctrl.h startup.c v775.h bb-cc77.h bbrl.c def-k2915.h nbbqdrv.c stop.c v785.c bb-k2915.h clear.c def-sbs620.h nbbqdrv.h v767.c v785.h bb-vme.h common.h def-vmemm.h nbbqio.h v767.h v792.c
bbmodules.h |
---|
#define BBRL #define MAXBUFF 0x1e00 #define CAMAC /* CAMACを使うことを宣言。 */ #define CAMACINT /* CAMACを割り込みソースにします。(省略可) */ #define CC7700 /* クレートコントローラの選択。K2915 から CC7700 に変更。 */ #define LAMN 3 /* Look At Me モジュールの選択。 */ /* ステーションナンバー3番に入っているADCをLAMとする。 */ #define OPRN 22 /* 今回は使わないので、変更しない。この行、削除しても良い。 */ /* アウトプットレジスタのあるステーションナンバーを指定。 */ #define OPBUSYCL 1 /* アウトプットレジスタを使わない場合は関係ない。この行、削除しても良い。 */ |
startup.c |
---|
void startup(void){ crate_define_lam(LAMN); /* crate_define_lam(LAMN)でLAMにするモジュールを指定。 */ control_mod(0,LAMN,0,26); /* control_mod(0,LAMN,0,26)でLAMにするモジュールに対して LAMを許可。 */ /* アウトプットレジスタは使わないため、以下コメントアウト。 */ /* write_data(0,OPRN,0,17,OPBUSYCL); */ } |
stop.c |
---|
void stop(void){ control_mod(0,LAMN,0,9); /* cotrol_mod(0,LAMN,0,9)で念のためLAMモジュールをクリア。*/ control_mod(0,LAMN,0,24); /* control_mod(0,LAMN,0,24)でLAMを禁止。 */ } |
evt.c |
---|
void evt(void){ /* init_event(1)は約束ごとで、evt.cの先頭に書く。おまじない? */ /* init_segment(segid) <−> end_segment() の間にセグメントのデータを記述していく。 segidには、1 や 2 を指定する。セグメントとは、データを保存するスペースのこと? segidに 1 を指定すると、idが 1 の場所にデータが保存されていく感じ? 後でANAPAWで解析するときに、このsegidを使う。 */ init_event(1); init_segment(1); /* read_segndata(short len,short c,short n,short a,short f) は、セグメントにlen個データを追加 (aはインクリメントされる)。 すなわち、データファイルの中の、セグメントってところにデータを保存するってこと? ここで、lenはADCのチャンネル数。16チャンネルなので、16とした。 今回は1チャンネルしか使わないので、1としてもよい。 cは 0 にする。クレートが複数ある場合には 0 以外を書くこともある。 nはADCのステーションナンバーの 3 を指定する。aはよくわからない。 fはCAMACファンクションでデータの読み込みを実行する 0 を指定する。 CAMACファンクションについては、仕様書参照。 */ read_segndata(16,0,3,0,0); end_segment(); /* LAMモジュールをクリア。次のデータに備える。 */ control_mod(0,LAMN,0,9); } |
sca.c |
---|
void sca(void){ /* スケーラは使わないため、ここには何も書かなくてよい。*/ } |
clear.c |
---|
void clear(void){ /* アウトプットレジスタは使わないため、ここには何も書かなくてよい。*/ /* write_data(0,OPRN,0,17,OPBUSYCL); */ } |
$ make clean $ make
$ nbbqinst
rdfファイルからヒストグラムを作るには、ANAPAWが必要なのでを参考にインストールする。自分のアカウントを作り、そのホームディレクトリにインストールするのがよい。
rdfファイルができたら、ANAPAWをインストールし、ADCで取ったデータをヒストグラムとして表示する。
$ cp ~/test/0001.rdf ~/exp/nbbq $ cd ~/exp/nbbq
test.ana |
---|
analys 1 hst1 0, 1,1,1,2, 400, 0.,2000., 'raw 1' |
$ csh $ analogin $ anapaw
ANAPAW> book test.ana ANAPAW> hst1 ANAPAW> ana/loop 0001.rdf ANAPAW/LOOP> start
書体 | 意味 | 例 |
---|---|---|
AaBbCc123 | 端末の表示する文字。またはコードなど。 | $ You have mail. |
AaBbCc123 | ユーザーが入力する文字。 端末の表示する文字と区別する。 | $ su password: |
AaBbCc123 | コマンドの引数やコードの可変部分。 実際の名前や値と置き換える。 | $ rm filename |