第 6 章 GAGG シンチレーターとの組み 合わせによる γ 線検出合わせによるγ線検出
6.4 結果・考察
前小節で得た結果をさらに吟味・考察するために行った追加測定と見積もりについて述 べる。
ここまでの測定ではシンチレーターを裸の状態で
MPPC
にとりつけていた。この場合、シンチレーション光のうち
MPPC
受光部以外へ向かったものはそのまま外部へ逃げて検 出されない可能性がある。そこで、反射材のテフロンシートでシンチレーターを包み、シ ンチレーションが反射してからMPPC
の受光面に届く寄与を検討することにした。図6.5
にこの際の想定図をあげる。図
6.5:
反射材のテフロンシートをかぶせた場合の想定図図
6.6:
テフロンを被せていないとき 図6.7:
テフロンを被せたとき結果の波高分布を、図
6.6
と図6.7
に示す。波高分布のピークをガウス分布でフィット した平均値を比較すると、テフロンを被せていないとき2.63
×10
4に対して、テフロンをた。そこで、直接
MPPC
の受光面に向かったシンチレーション光子の数を検討するため、以下のようにモンテカルロシミュレーションを行った。
5mm
角のシンチレーターの中央で光電効果を起こしたと仮定し、この点に対しMPPC
の受光面が占める立体角ω
は立体角
=
受光面積 距離2 で表され、受光面積は1mm
2,
距離は2.5mm
である。MPPC
の検出効率は、開口率(
ピクセルの境界付近など不感部分をのぞいた割合)61.5
%と 量子効率および電子雪崩形成確率の積で決まり、それを図6.8
に示す。(
検出効率にはクロ ストークとアフターパルスによる影響が含まれている)
これによると、GAGG
の発光波長520[nm]
のとき光子検出効率は40
%である。[1]
図
6.8: MPPC
の検出効率(
浜松ホトニクス社のカタログより抜すい)
すると、全立体角が4π[sr]
であるので、受光部に届いて検出される光子の割合はω
4π ε
det= 1 2.5
2×1
4π
×0.40 = 0.0051
と見積もられる。シンチレーター
GAGG
の発光量は、製造者である古河機械金属の仕様表(表3.2
参照)
によれば60,000[photon/MeV]
である。137Cs
のγ
線エネルギー0.662MeV
がすべてシンチ レーター内で失われたと仮定するとMPPC
で検出される光子の期待値は、60,000[photon/MeV]
×0.662[MeV]
×0.51[
%]=202[photons]
と見積もられる。ここで、
MPPC
は同じピクセルに2
個以上の光子が入った場合には1
個 の光子が入った時と同じ信号が出ることを考慮し、MPPC
によって検出できる光子数の シミュレーションを以下のようなアルゴリズムで行った。検出される光子数の期待値が
202
であるから、個々の事象では± √
202
個の標準偏差を持 つガウス分布するものとした。表2.1
にあるように本実験で用いたMPPC
は400
のピク セルを持つため、光子は400
のピクセルに一様分布で入射し、同一ピクセルに複数個の光 子が入ったときはそれを1光子とカウントした。図
6.9
には各ピクセルに入射した光子数の分布、図6.10
は光子を検出したピクセル数の 分布を示す。図
6.9:
各ピクセルに入射した光子数のヒストグラム図
6.10:
光子を検出できたピクセル数のヒストグラムこれらにより、平均
202
個の光子がMPPC
の有感領域に達するが、同一ピクセルに複 数個の光子が入る場合があるため、結果として、平均して159
個程度の光子が検出される という見積もりになる。これは実際に実験データから得た76
個と比較すると76
÷159=0.477
となり、実験値は期待値の
48
%程度であるという結論に達する。この約2
倍の減少が生 じている理由は現時点では未解明である。第 7 章 まとめ
LED
点灯をMPPC
で受け、波高分布からその増倍率を測定し、10
5オーダーの増倍率 を示し、フォトンカウンティンぐ能力を持つことを確認した。GAGG
シンチレーターと 組み合わせて、137Cs
が発する662keV
のγ
線を検出できることを確認した。ただし、シ ンチレーター内で662keV
の全てが失われ、発生したシンチレーション光のうちMPPC
受 光部に直接入ったもののみが検出されるという仮定に基づいた期待値と比べ、実験データ から得た測定値は半分程度であった。この約2
倍の減少が生じている理由は現時点では未 解明である。謝辞
本研究を進めるにあたり、始終ご指導ご鞭撻を頂きました指導教官の宮林謙吉先生に心 より感謝いたします。また、たくさんのアドバイスを頂きました林井久樹先生、下村真弥 先生に深く感謝いたします。そして、たびたびご助言、ご協力いただいた先輩方、1年間 高エネルギー物理学研究室で共に研究を進めてきた同回生にも大変お世話になりありが とうございました。
たくさんの方々のご支援とご協力により、卒業論文を完成させることができました。皆 様へ心から感謝の気持ちと御礼を申し上げたく、謝辞にかえさせていただきます。
付 録 A 増倍率測定時に用いたデータ 収集プログラムのソースコード
//header file
#include <unistd.h>
#include <stdio.h>
#include "vxi11_user.h"
int main(int argc , char *argv[]){
FILE *fp;
fp=fopen("Cs03032.txt", "w");
int nevt = 5000;//event number CLINK *clink;
clink = new CLINK;
static char* serverIP = "10.0.1.108";
int A;
//-- open scope
if (vxi11_open_device(serverIP , clink) != 0){
printf ("Couldn ’t open scope.\n");
exit(1);
}
//-- buffer to receive data block.
static char wf1[10000],wf2[10000];
char buffer[40];
int ret;
ret = vxi11_send(clink , "DAT:SOU CH2");//Digitize ch=2 signal.
ret = vxi11_send(clink , "HOR:SCA 40E-09"); //Horizontal 40 ns/div ret = vxi11_send(clink , "CH2:SCA 10E-03");//ch=2 vertical 10mV/div ret = vxi11_send(clink , "TRIG:A:EDGE:SOU CH2");//triger type = edge.ch=2 ret = vxi11_send(clink , "TRIG:A:EDGE:SLO FALL");//slope control=fall
ret = vxi11_send(clink , "TRIG:A:LEV:CH2 -37.6E-03");//triger level = -37.6mV ret = vxi11_send(clink , "TRIG:A:MODE NORM");//trigered data get
ret = vxi11_send(clink , "CH1:POS 3.0"); //vertical position ret = vxi11_send(clink , "HOR:DEL:MOD OFF"); //delay mode off ret = vxi11_send(clink , "HOR:POS 20");//trig pos 20% from left ret = vxi11_send(clink , "HOR:RECO 1000");//record length
ret = vxi11_send(clink , "ACQ:MOD SAM");//acquisition mode = 8bit
double xinc = vxi11_obtain_double_value(clink , "WFMO:XIN?"); //get horizontal range printf("%10.3e\n",xinc);
fprintf(fp,"%10.3e\n",xinc );
for (int iev = 0 ; iev < nevt + 1; iev++){
ret = vxi11_send(clink , "DAT:ENC FAS");// fastest encording ret = vxi11_send(clink , "WFMO:BYT_N 1"); //renge = -128~127 ret = vxi11_send(clink , "DAT:STAR 1");
ret = vxi11_send(clink , "DAT:STOP 1000");
ret = vxi11_send(clink , "CURV?");//get data
long bytes_returned=vxi11_receive_data_block(clink , wf1, 10000, 1000);
if (iev == 0){
continue;
} }
for (int k = 0; k < 200; k++){
A = wf2[k]-wf1[k];
if (A==0){
continue;
} break;
}
printf(" %5d %5d ", iev, bytes_returned);
fprintf(fp," %5d %5d ",iev,bytes_returned);
for (int i = 0 ; i < 1000; i++){
fprintf(fp,"%d ",(char)wf1[i]);
}
printf("\n");
fprintf(fp,"\n");
}
fclose(fp);
printf("ending... \n");
vxi11_close_device(serverIP , clink);
}
付 録 B 増倍率データ解析プログラム
#include <stdio.h>
int main() {
int i, n, j;
float xdiv; /* horizonta axises range. */
int iev, nsample; /* Event number and number of sampling. */
int siny[10000];
FILE *fp;
FILE *fpout;
fp = fopen("Cs03032.txt", "r"); //file open for read if(fp == NULL){
printf("can’t open file \n");
return 0;
}
fpout = fopen("Cs03032i.txt","w"); //file open for write if(fp == NULL){
printf("can’t open file \n");
return 0;
}
/* Top line is x/div. */
fscanf(fp, "%e\n", &xdiv );
printf("xdiv read done.\n");
/* Read event number unless EOF. */
while(fscanf(fp,"%d",&iev)!=EOF){
printf("event number=%d",iev);
/* Check number of samplings. */
fscanf(fp, "%d", &nsample );
/* Read sample and hold data.*/
const int nstot =1000;//taking 1000 sample is normal.
for(i=0; i<nstot; i++){
fscanf(fp, "%d", &(siny[i]) ); //get data }
printf("\n");
if(nsample == nstot){
/* Do needed instructions for the read data. */
double sum = 0.0;
double sum2 = 0.0;
double sum3 = 0.0;
double dev = 0.0;
double ave = 0.0;
double delta = 0.0;
double max = 0.0;
const int nped = 100;
/* sum */
for(i=0;i<nped;i++){
sum = sum + (double)siny[i];
}
/* average */
ave = sum / nped;
for(i=0;i<nped;i++){
sum2 = sum2 + (ave - (double)siny[i])*(ave - (double)siny[i]);
}
dev = sum2 / nped;
/* delta */
for(i=nped+10;i<300;i++){
delta = ave - (double)siny[i];
/*pulse hight*/
if(max < delta){
max = delta;
}
/*integral*/
sum3 = sum3 + delta;
}
/* select data */
//fprintf(fpout,"%d %f %f %f %f\n" ,iev,ave,dev,max,sum3);
printf("%d %f %f %f %f\n",iev,ave,dev,max,sum3);
fprintf(fpout,"%f\n" ,sum3); //only integral }
}/* Event loop end. */
fclose(fp);
fclose(fpout);
printf("ending ...\n");
}
付 録 C 検出光子数のシミュレーション
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
//#include<random.h>
/*ramdom number of gaus generation*/
int main(int argc, char* argv[]){
int ipix[400];//ピクセル数 int nran[8];
FILE *fp;
FILE *fpp;
fp=fopen("np2.txt","w");
fpp=fopen("ne2.txt","w");
/* expected value */
const double mu=202.0;
const double sigma=sqrt(202.0);
srand(10);
for(int i=0;i<10000;i++){
double r=((double)rand())/((double)RAND_MAX);
double rr=((double)rand())/((double)RAND_MAX);
double z1=sqrt( -2.0*log(r) )*cos( 2.0*M_PI*rr);
double z2=sqrt( -2.0*log(r) )*sin( 2.0*M_PI*rr);
double rand_normal=0.0;
rand_normal= (double)mu +(double)sigma*(double)z1;
printf("event number =%d rand_normal =%f\n",i,rand_normal);
int npix=0;
for(int i=0;i<400;i++){
ipix[i]=0.0;
}
for(int t=0;t<rand_normal;t++){
int iran=rand()%400;
ipix[iran]++;
}
/* number of photon in pixel */
for(int it=0;it<400;it++){
if(ipix[it]!=0){
npix++;
} }
fprintf(fpp,"%d\n",npix);
for(int jj=0;jj<400;jj++){
fprintf(fp,"%3d",ipix[jj]);
}
}
fclose(fp);
fclose(fpp);
}