Source: $^{152}Eu+^{133}Ba$
Detectors: Eurica Array: 12 Cluster Detectors
Electronics: 100Mhz, 14bit DGF-4C digitizer: energy , time 25ns/bin
Trigger: 1kHz Clock
Energy & time window: $100\mu s$ before trigger.
timing: leading edge discrimination for fast trigger.
- ghit, gid[ghit], ge[ghit], gt[ghit];// sorted by gid value in ascending order
- ahit, aid[ahit], ae[ahit], at[ahit];//addback
- 所有探测器的相对时间延迟已经校正
TCanvas *c1 = new TCanvas("c1","c1");
TFile *fin = new TFile("eurica.root");
TTree *tree1 = (TTree*) fin->Get("tree");
tree1->Scan("gid:int(gid/7):gid%7:ge:gt","","",5,1);
*********************************************************************************** * Row * Instance * gid * int(gid/7 * gid%7 * ge * gt * *********************************************************************************** * 1 * 0 * 38 * 5 * 3 * 355.39204 * -17058.86 * * 1 * 1 * 78 * 11 * 1 * 252.57337 * -52075.91 * * 2 * 0 * 22 * 3 * 1 * 721.78308 * -23301.26 * * 2 * 1 * 24 * 3 * 3 * 69.567794 * -23329.60 * * 2 * 2 * 27 * 3 * 6 * 187.30067 * -23277.87 * * 2 * 3 * 28 * 4 * 0 * 166.66361 * -17738.86 * * 2 * 4 * 32 * 4 * 4 * 73.365846 * 4244.7660 * * 2 * 5 * 37 * 5 * 2 * 856.34057 * -17667.32 * * 2 * 6 * 41 * 5 * 6 * 121.9316 * -5041.272 * * 2 * 7 * 44 * 6 * 2 * 257.20985 * -5065.583 * * 2 * 8 * 79 * 11 * 2 * 679.46405 * -84233.31 * * 2 * 9 * 80 * 11 * 3 * 595.97674 * -84263.73 * * 3 * 0 * 4 * 0 * 4 * 345.00679 * -88546.18 * * 3 * 1 * 17 * 2 * 3 * 94.129311 * -88728.07 * * 4 * 0 * 5 * 0 * 5 * 287.14200 * -91794.79 * * 4 * 1 * 8 * 1 * 1 * 302.35514 * -19152.93 * * 4 * 2 * 69 * 9 * 6 * 37.762305 * -36942.37 * * 5 * 0 * 45 * 6 * 3 * 232.74277 * -59180.04 * * 5 * 1 * 75 * 10 * 5 * 334.94150 * -38333.97 * ***********************************************************************************
tree->Draw("int(gid%7):int(gid/7)>>(12,0,12,6,0,6)","","colz");
c1->SetLogz(0);
c1->Draw();
tree->Draw("ge>>h1(1000,0,1000)","","");
c1->SetLogy();
c1->Draw();
tree->Draw("ge[0]:gt[0]-gt[1]>>(100,-1000,1000,1000,0,1000)","ge[0]>50 && ge[1]>50","colz");
c1->SetLogz();
c1->SetLogy(0);
c1->Draw();
tree->Draw("ge[0]:gt[0]-gt[1]>>h1(80,-1000,1000,200,0,1000)","ge[1]>500","colz");
c1->SetLogz();
c1->Draw();
Profile histograms are used to display the mean value of Y and its error for each bin in X. The displayed error is by default the standard error on the mean (i.e. the standard deviation divided by the sqrt(n) ). Profile histograms are in many cases an elegant replacement of two-dimensional histograms.
TProfile * TH2::ProfileY( const char *name = "_pfy",
Int_t firstxbin = 1,
Int_t lastxbin = -1,
Option_t * option = ""
) const
c1->Clear();
TF1 *f1 = new TF1("f1","[0]+[1]/pow(x,0.5)+[2]/pow(x,1)+[3]/pow(x,2)",50,1000);
h1->ProfileY("hpf1");
hpf1->Fit("f1","R");
c1->Draw();
FCN=342.908 FROM MIGRAD STATUS=CONVERGED 96 CALLS 97 TOTAL EDM=5.37172e-14 STRATEGY= 1 ERROR MATRIX ACCURATE EXT PARAMETER STEP FIRST NO. NAME VALUE ERROR SIZE DERIVATIVE 1 p0 -3.25398e+01 8.08377e+00 2.79661e-03 9.63089e-07 2 p1 2.38689e+03 2.86430e+02 3.80138e-02 7.67892e-08 3 p2 -4.26580e+04 2.70829e+03 4.46362e-01 6.59028e-09 4 p3 9.81220e+05 6.29167e+04 3.41786e+01 5.85795e-11
tree->SetAlias("y","ge[0]");
tree->SetAlias("x","gt[0]-gt[1]");
tree->SetAlias("t","x-(-32+2.387e3/pow(y,0.5)-4.2658e4/pow(y,1)+9.8122e5/pow(y,2))");
c1->Clear();
tree->Draw("y:t>>h2(200,-1000,1000,1000,0,1000)","ge[1]>500 && ge[0]>50","colz");
c1->SetLogz();
c1->Draw();
tree->SetAlias("t","gt-(-32+2.387e3/pow(ge,0.5)-4.2658e4/pow(ge,1)+9.8122e5/pow(ge,2))");
tree->SetAlias("t0","gt[0]-(-32+2.387e3/pow(ge[0],0.5)-4.2658e4/pow(ge[0],1)+9.8122e5/pow(ge[0],2))");
tree->SetAlias("t1","gt[1]-(-32+2.387e3/pow(ge[1],0.5)-4.2658e4/pow(ge[1],1)+9.8122e5/pow(ge[1],2))");
tree->Draw("ge[0]:t0-t1>>h2(200,-1000,1000,1000,0,1000)","ge[1]>50 && ge[0]>50","colz");
c1->Draw();
c1->Clear();
tree->Draw("t0-t1>>h3(200,-1000,1000)","ge[1]>50 && ge[0]>50","colz");
h3->Fit("gaus");
c1->SetLogy(1);
c1->Draw();
FCN=82118.4 FROM MIGRAD STATUS=CONVERGED 121 CALLS 122 TOTAL EDM=1.66667e-08 STRATEGY= 1 ERROR MATRIX ACCURATE EXT PARAMETER STEP FIRST NO. NAME VALUE ERROR SIZE DERIVATIVE 1 Constant 5.56148e+04 8.95455e+01 8.44908e+00 -2.62981e-06 2 Mean -1.78008e-01 6.60671e-02 9.24389e-03 -6.63648e-04 3 Sigma 6.08437e+01 7.23086e-02 2.27119e-05 -1.05100e+00
TCut gtcoin = "abs(t0-t1)<180";//coincidence time window
tree->Draw("gid[1]:gid[0]>>(21,0,21,21,0,21)",gtcoin,"colz");
gStyle->SetOptStat(0);//off statistics box
c1->SetLogy(0);
c1->Draw();
TCut gdet = "int(gid[0]/7)==int(gid[1]/7)";//same detector
TCut gidadj = "abs(gid[0]%7-gid[1]%7)==1|| gid[0]%7==0 && gid[1]%7==5 || gid[1]%7==6";//adjacent crystals
tree->Draw("ge[0]:ge[1]>>(1000,0,1000,1000,0,1000)",gtcoin&&gdet&&gidadj,"colz");
c1->Draw();
TCut gdet = "int(gid[0]/7)==int(gid[1]/7)";//same detector
TCut gidadj = "abs(gid[0]%7-gid[1]%7)==1|| gid[0]%7==0 && gid[1]%7==5 || gid[1]%7==6";//adjacent crystals
tree->Draw("ge[0]:ge[1]>>(1000,0,1000,1000,0,1000)",!gtcoin&&gdet&&gidadj,"colz");
c1->Draw();
tree->Draw("ge[0]:ge[1]>>(1000,0,1000,1000,0,1000)",gtcoin&&gdet&&!gidadj,"colz");
c1->Draw();
tree->Draw("ge[0]>>h1(1000,0,1000)",gtcoin&&gdet&&gidadj,"colz");
TH1F *h1 = (TH1F*)gROOT->FindObject("h1");
h1->SetLineColor(kGreen);
tree->Draw("ge[1]>>h2(1000,0,1000)",gtcoin&&gdet&&gidadj,"colz");
h1->Draw("same");
c1->Draw();
tree->Draw("ge[0]+ge[1]:ge[0]>>(1000,0,1000,1000,0,1000)",gtcoin&&gdet&&gidadj,"colz");
c1->Draw();
tree->Draw("ge[0]+ge[1]>>(1000,0,1000)",gtcoin&&gdet&&gidadj,"colz");
c1->Draw();
tree->SetAlias("at","at-(-32+2.387e3/pow(ae,0.5)-4.2658e4/pow(ae,1)+9.8122e5/pow(ae,2))");
tree->SetAlias("at0","at[0]-(-32+2.387e3/pow(ae[0],0.5)-4.2658e4/pow(ae[0],1)+9.8122e5/pow(ae[0],2))");
tree->SetAlias("at1","at[1]-(-32+2.387e3/pow(ae[1],0.5)-4.2658e4/pow(ae[1],1)+9.8122e5/pow(ae[1],2))");
TCut atcoin = "abs(at0-at1)<180";//coincidence time window
tree->Draw("ae[0]:ae[1]>>(1000,0,1000,1000,0,1000)",atcoin,"colz");
c1->Draw();
tree->Draw("ge>>h1(200,0,200)","","colz");
TH1F *h1 = (TH1F*)gROOT->FindObject("h1");
h1->SetMinimum(10000);
tree->Draw("ae>>h2(200,0,200)","","colz same");
TH1F *h2 = (TH1F*)gROOT->FindObject("h2");
h2->SetLineColor(kRed);
c1->SetLogy(0);
c1->Draw();
tree->Draw("ge>>h1(200,700,900)","","colz");
TH1F *h1 = (TH1F*)gROOT->FindObject("h1");
h1->SetMinimum(1000);
h1->SetMaximum(60000);
tree->Draw("ae>>h2(200,700,900)","","colz same");
h1->SetLineColor(kRed);
c1->SetLogy(0);
c1->Draw();
除了一个探测器内相邻单元之外,几何上相邻的不同探测器的探测单元之间也可以做addback。
当源与探测器之间距离较远时,不同gamma射线进入相邻探测单元的几率很小,相邻探测器的关联主要是compton散射,进行addback可以提高探测器的peak-compton ratio
当源与探测器之间距离很近时,不同gamma射线进入相邻探测单元的几率大大增加,此时addback会将两个gamma射线能量相加,造成假的gamma峰。
一般情况下应该同时保留各个探测单元的事件以及addback的事件,分析时注意对比addback前后的数据,避免addback的副作用。