• 検索結果がありません。

PseudoGenerator による疑似イベント生成実験と性質の検証

ドキュメント内 master thesis saitoh (ページ 48-51)

第 4 章 FOXSI 試作検出器の開発と性能評価 19

5.1 デッドタイム補正

5.1.3 PseudoGenerator による疑似イベント生成実験と性質の検証

新たに開発した PseudoGenerator で疑似イベントを生成し、実際に検出器で読み出しをおこ ない、疑似イベントの性質を調べた。線源は用いずに疑似トリガーのみでイベントを生成し、読 み出した。1イベントごとに、前のイベントを読み出し終えてから次のイベントのトリガーを受 け付けるまでの時間(live time)をカウンターで数え、ヒストグラムを作ったところ、図5.4のよ うな指数分布が得られた。指数関数でフィットしたときの χ2値を自由度で割った値は、疑似イ ベントレートが 33 Hzのとき 1.19、264 Hzのとき 1.41 となる。このことから、数百ヘルツま での疑似イベントレートでは、イベントの時間間隔が指数分布に十分よく従う疑似乱数を生成で きていると言える。

一方で、一定時間内に生成した疑似イベント数の分布を調べると、完全にランダムな場合と比 べて広がっている。ポアソン分布であれば、平均のイベント数をµとすると、イベント数分布の 標準偏差は√µになるはずである。単位時間内の疑似イベントの生成数の分布を見ると、1 秒の 時間間隔の場合も0.1 秒の時間間隔も、ポアソン分布にくらべて1.3 倍ほど広がっている。

livetime 0 200 400 600 800 100012001400160018002000

103

! 1

10 102

103

livetime

livetime

0 2 4 6 8 10 12 14 16

106

! 1

10 102

103

livetime

0 10 20 30 40 50 60 70 80

0 20 40 60 80 100 hist

counts/s

0 10 20 30 40 50 60

0 20 40 60 80 100 120 hist

counts/0.1s pseudo rate: 33 Hz pseudo rate: 264 Hz

図5.4: PseudoGeneratorによる疑似イベント生成結果。上段はイベントごとに測定したlive time の分布。下段は単位時間当たりに生成した疑似イベント数の分布。下段の黒の実線はポアソン分 布を表す。

ソフトウェアによる乱数の性質の検証

図5.4に挙げた指数分布に従う乱数の性質が、一様乱数の性質のよるものなのか、対数計算の 近似によるのか、ハードによるのかを知るために、ソフトウェア的に乱数の性質を調べてみた。

2を法とする原始多項式

今回、一様乱数の生成に用いた「2を法とする原始多項式」の方法について述べる[28][29]。 2を法とする原始多項式とは、係数が 0か1 の多項式のうち特別なものを指す。例えば

x31+x3+x0

がその一つである。このような多項式をn個のビットから新しいビットを生成する漸化式として 用いることで、n ビットの乱数を発生させることができる。具体的には、32 ビット幅の初期値 X0

X0=A[31−0]

とすると、次に来る乱数X1 は、

X1 =A[310]&[A31 XORA3 XORA0] と与えられる。

この方法はハードウェアでの実現に適している。この場合、32ビットのシフトレジスタが1個 と、2 つの XORゲートがあればよい。

ソフトウェアによる乱数の分布の検証

単位時間内のイベント数分布がポアソン分布にならない原因は、実験にもちいた「2を法とす る原始多項式」の性質によるものである。図5.5にソフトウェア的にイベント数分布を計算し、

実験結果と比較したものを示す。FPGAに実装した VHDLコードをC++言語に焼きなおして 計算し、生成した乱数の分布を調べたところ、測定結果をよく再現することができた。いっぽう で、一様乱数の生成に「2を法とする原始多項式」ではなくて、性質のよい乱数として知られる

「メルセンヌ・ツイスタ」を用いたところ、イベント数分布はポアソン分布と一致した。

このことから実験で得たイベント数分布の広がりは「2を法とする原始多項式」の性質による ものであるといえる。「2を法とする原始多項式」の初期値やXOR 演算を行うビットを変えて も、分布の広がりは変わらなかった。

メルセンヌ・ツイスタを FPGA に実装すれば、より「ランダム」な疑似イベントを生成する ことができると考えられる。しかしながら、メルセンヌ・ツイスタを実装するには32ビット ×

624 = 2496 バイトのワーキングメモリを消費し、リソースの限られた FPGA には向いていな

い。今回一様乱数の生成にもちいた「2を法とする原始多項式」は単純なビット演算のみから乱 数生成が可能で、コストの観点からハードウェアへの実装に向いている。そこで以後の実験では

「2を法とする原始多項式」で乱数生成してデッドタイム補正の精度を検証する。

0 1 0 2 0 3 0 4 0 5 0 6 0 0

002 00 4 006 00 01 012

hist_poisson

Counts/s

Probability

図5.5: 疑似イベントのカウント数分布の検証。黒のプロット:測定結果、青:実験に用いたも のと同じ乱数をソフトウェア的に計算したもの、赤:メルセンヌ・ツイスタを用いて計算したも の、黒実線:ポアソン分布。縦軸は総イベント数で規格化している。

5.1.4 PseudoGenerator を用いたデッドタイム補正の検証

ドキュメント内 master thesis saitoh (ページ 48-51)