Int_t x1hit; //multiplicity
Int_t x1[x1hit]; //Strip
double x1e[x1hit]; //energy
Int_t y1hit;
Int_t y1[y1hit];
Int_t y1e[y1hit];
double x1es,y1es; //total energy of x,y side.
int x1m,y1m; //multiplicity, adjacent tracks are counted as one.
//%jsroot on
TFile *ipf = new TFile("./data/cal_16C.root");
TTree *tree = (TTree*)ipf->Get("tree");
TCanvas *c1=new TCanvas;
c1->Clear();
c1->SetWindowSize(1200,300);
c1->Divide(3,1);
c1->cd(1);
gPad->SetLogz();
tree->Draw("x1hit:y1hit>>ha(4,1,5,4,1,5)","","colz");
c1->cd(2);
gPad->SetLogz();
tree->Draw("x2hit:y2hit>>hb(4,1,5,4,1,5)","","colz");
c1->cd(3);
gPad->SetLogz();
tree->Draw("x3hit:y3hit>>hc(4,1,5,4,1,5)","","colz");
c1->Draw();
c1->Clear();
c1->SetWindowSize(1200,300);
c1->Divide(3,1);
c1->cd(1);
tree->Draw("x1es:y1es>>hs1(200,0,10000,200,0,10000)","x1hit>0 && y1hit>0","colz");
gPad->SetLogz();
c1->cd(2);
tree->Draw("x2es:y2es>>hs2(200,0,10000,200,0,10000)","x2hit>0 && y2hit>0","colz");
gPad->SetLogz();
c1->cd(3);
tree->Draw("x3es:y3es>>hs3(200,0,10000,200,0,10000)","x3hit>0 && y3hit>0","colz");
gPad->SetLogz();
c1->Draw();
TCut cdet1 ="x1hit>0 && y1hit>0 ";
TCut cdet2 ="x2hit>0 && y2hit>0";
TCut cdet3 ="x3hit>0 && y3hit>0";
c1->Clear();
c1->SetWindowSize(1200,400);
gStyle->SetOptStat(0);
c1->Divide(3,1);
c1->cd(1);
tree->Draw("x1es:x1es-y1es>>hds1(200,-100,100,200,0,8000)",cdet1,"colz");
gPad->SetLogz();
c1->cd(2);
tree->Draw("x2es:x2es-y2es>>hds2(200,-100,100,200,0,8000)",cdet2,"colz");
gPad->SetLogz();
c1->cd(3);
tree->Draw("x3es:x3es-y3es>>hds3(200,-100,100,200,0,8000)",cdet3,"colz");
gPad->SetLogz();
c1->Draw();
c1->Clear();
c1->SetWindowSize(1200,300);
gStyle->SetOptStat(0);
c1->Divide(3,1);
c1->cd(1);
tree->Draw("x1hit-y1hit:x1es-y1es>>h2ds1(50,-100,100,6,-3,3)",cdet1 ,"colz");
gPad->SetLogz();
c1->cd(2);
tree->Draw("x2hit-y2hit:x2es-y2es>>h2ds2(50,-100,100,6,-3,3)",cdet2,"colz");
gPad->SetLogz();
c1->cd(3);
tree->Draw("x3hit-y3hit:x3es-y3es>>h2ds3(50,-100,100,6,-3,3)",cdet3,"colz");
gPad->SetLogz();
c1->Draw();
c1->Clear();
c1->SetWindowSize(1200,250);
gStyle->SetOptStat(0);
c1->Divide(5,1);
c1->cd(1);
tree->Draw("x1es-y1es:x1es>>h1(200,0,8000,200,-100,100)",cdet1 && "x1hit-y1hit == -2","colz");
gPad->SetLogz();
c1->cd(2);
tree->Draw("x1es-y1es:x1es>>h2(200,0,8000,200,-100,100)",cdet1 && "x1hit-y1hit == -1","colz");
gPad->SetLogz();
c1->cd(3);
tree->Draw("x1es-y1es:x1es>>h3(200,0,8000,200,-100,100)",cdet1 && "x1hit-y1hit==0","colz");
gPad->SetLogz();
c1->cd(4);
tree->Draw("x1es-y1es:x1es>>h4(200,0,8000,200,-100,100)",cdet1 && "x1hit-y1hit==1","colz");
gPad->SetLogz();
c1->cd(5);
tree->Draw("x1es-y1es:x1es>>h5(200,0,8000,200,-100,100)",cdet1 && "x1hit-y1hit==2","colz");
gPad->SetLogz();
c1->Draw();
DSSD的各个条经幅度归一化后,刻度后的幅度$A'_i$与能量的关系统一变为$E_i =kA’_i+b $。其中刻度系数$(k,b)$为参考条$x_{im}$ 的能量刻度系数$(k_{x_{im}},b_{x_{im}})$。设x的多重性为$m_x$, y的多重性为$m_y$, 则 x和y侧的总能量分别为 $$ \begin{align} E_x=k\sum_\limits {i}A’_{xi}+m_xb \\ E_y=k\sum_\limits {j}A’_{yj}+m_yb \end{align} $$ 由$E_x=E_y$, 可得两侧幅度之差为 $$ \text{x1es-y1es} = \sum_\limits {i}A’_{xi}-\sum_\limits {j}A’_{yj}=(m_y-m_x)\frac{b}{k} \tag{1} $$
两侧多重性相同$m_x=m_y$,差值为0。
两侧多重性不同,则差值不为零。多重性差别越大,差值的绝对值越大;差值的正负取决于b值的正负。
则有 $$ \text{x1es'-y1es'} = \sum_\limits {i}A’'_{xi}-\sum_\limits {j}A’'_{yj}=0 \tag{4} $$
即修正后两侧幅度差值与多重性无关。
相邻条的细致的关联关系
图(a) 所示为DSSD相邻的第 15 根条和第 16 根条的能量信号的关联。图中主要分为三个区域:A区域为条间能量共享信号,B 和 C 区域为相邻条感应信号,D 区域为 基线 (Pedestal) 信号。图 (b) 为图 (a) 横轴低能端的放大显示。可以看到,随着第 16 根条能量的提高,第 15 根条上必然以一定的比例产生一个小信号(低于 100 ch), 我们称这种小信号为相邻条的感应信号。感应信号的幅度正比于源信号的幅度。
tree->SetAlias("xesc","x1es+x1hit*(-25)");
tree->SetAlias("yesc","y1es+y1hit*(-25)");
tree->SetAlias("de","xesc-yesc");
tree->SetAlias("dhit","x1hit-y1hit");
c1->Clear();
c1->SetWindowSize(1200,250);
gStyle->SetOptStat(0);
c1->Divide(5,1);
c1->cd(1);
tree->Draw("de:xesc>>h1(200,0,8000,200,-100,100)",cdet1 && "dhit == -2","colz");
gPad->SetLogz();
c1->cd(2);
tree->Draw("de:xesc>>h2(200,0,8000,200,-100,100)",cdet1 && "dhit == -1","colz");
gPad->SetLogz();
c1->cd(3);
tree->Draw("de:xesc>>h3(200,0,8000,200,-100,100)",cdet1 && "dhit==0 ","colz");
gPad->SetLogz();
c1->cd(4);
tree->Draw("de:xesc>>h4(200,0,8000,200,-100,100)",cdet1 && "dhit==1","colz");
gPad->SetLogz();
c1->cd(5);
tree->Draw("de:xesc>>h5(200,0,8000,200,-100,100)",cdet1 && "dhit==2","colz");
gPad->SetLogz();
c1->Draw();
TF1 *f1a = new TF1("f1a","0",0,8000);
TF1 *f1b = new TF1("f1b","20+0.004*x",0,8000);
TF1 *f1c = new TF1("f1c","-10-0.004*x",0,8000);
f1b->SetLineColor(kGreen);
f1c->SetLineColor(kGreen);
TCut cs1 = "x1hit==1 && y1m==1|| y1hit==1 && x1m==1";
TCut cs2 = "x1hit==2 && y1hit==2 && x1m==1 && y1m==1";
TCut cs3 = "x1m==1 && y1m==1 && (x1hit!=y1hit)";
TCut cs = cs1 || cs2 || cs3 ;
TCut cdet2 = cdet1 && cs;//一个粒子入射
c1->Clear();
c1->SetWindowSize(800,200);
gStyle->SetOptStat(0);
c1->Divide(5,1);
c1->cd(1);
tree->Draw("de:xesc>>h1(200,0,8000,200,-100,100)",cdet2 && "dhit==-2","colz");
f1a->Draw("same"); f1b->Draw("same"); f1c->Draw("same");
c1->cd(2);
tree->Draw("de:xesc>>h2(200,0,8000,200,-100,100)",cdet2 && "dhit==-1","colz");
f1a->Draw("same"); f1b->Draw("same"); f1c->Draw("same");
c1->cd(3);
tree->Draw("de:xesc>>h3(200,0,8000,200,-100,100)",cdet2 && "dhit==0 ","colz");
f1a->Draw("same"); f1b->Draw("same"); f1c->Draw("same");
c1->cd(4);
tree->Draw("de:xesc>>h4(200,0,8000,200,-100,100)",cdet2 && "dhit==1","colz");
f1a->Draw("same"); f1b->Draw("same"); f1c->Draw("same");
c1->cd(5);
tree->Draw("de:xesc>>h5(200,0,8000,200,-100,100)",cdet2 && "dhit==2","colz");
f1a->Draw("same"); f1b->Draw("same"); f1c->Draw("same");
c1->Draw();
f1a = new TF1("f1a","0",0,8000);
f1b = new TF1("f1b","22+0.004*x",0,8000);
f1c = new TF1("f1c","-20",0,8000);
f1b->SetLineColor(kGreen);
f1c->SetLineColor(kGreen);
TCut cm = cdet1 && !cs;//
c1->Clear();
c1->SetWindowSize(1200,250);
gStyle->SetOptStat(0);
c1->Divide(5,1);
c1->cd(1);
tree->Draw("de:xesc>>h1(200,0,8000,200,-100,100)",cm && "dhit == -2","colz");
f1a->Draw("same"); f1b->Draw("same"); f1c->Draw("same");
c1->cd(2);
tree->Draw("de:xesc>>h2(200,0,8000,200,-100,100)",cm && "dhit == -1","colz");
f1a->Draw("same"); f1b->Draw("same"); f1c->Draw("same");
//gPad->SetLogz();
c1->cd(3);
tree->Draw("de:xesc>>h3(200,0,8000,200,-100,100)",cm && "dhit==0 ","colz");
f1a->Draw("same"); f1b->Draw("same"); f1c->Draw("same");
c1->cd(4);
tree->Draw("de:xesc>>h4(200,0,8000,200,-100,100)",cm && "dhit==1","colz");
f1a->Draw("same"); f1b->Draw("same"); f1c->Draw("same");
c1->cd(5);
tree->Draw("de:xesc>>h5(200,0,8000,200,-100,100)",cm && "dhit==2","colz");
f1a->Draw("same"); f1b->Draw("same"); f1c->Draw("same");
c1->Draw();
只考虑x/y侧不大于4重的事件; xx和yy互换的事件计入同一类。即将如下两类事件视为一类2.b
(xe[0]+xe[1]=ye[0] && |xx[0]-xx[1]|=1); xe[2]=ye[1]
(ye[0]+ye[1]=xe[0] && |yy[0]-yy[1]|=1); ye[2]=xe[1]
2.a: xe[0]=ye[0]; xe[1]=ye[1]
2.b: (xe[0]+xe[1]=ye[0] && |xx[0]-xx[1]|=1); xe[2]=ye[1]
2.c: (xe[0]+xe[1]=ye[0] && |xx[0]-xx[1]|$\neq$1)
2.d: (xe[0]+xe[1]=ye[0] && |xx[0]-xx[1]|=1); (xe[2]+xe[3]=ye[1] && |xx[2]-xx[3]|=1)
2.e: (xe[0]+xe[1]=ye[0]+ye[1] && |xx[0]-xx[1]|$\neq$1 && |yy[0]-yy[1]|=1)
3.a: xe[0]=ye[0]; xe[1]=ye[1]; xe[2]=ye[2]
3.b: xe[0]=ye[0]; xe[1]=ye[1]; (xe[2]+xe[3]=ye[2] && |xx[2]-xx[3]|=1)
4.a: xe[0]=ye[0]; xe[1]=ye[1]; xe[2]=ye[2]; xe[3]=ye[3]
tree->SetAlias("xe","int(x1e-(25))");
tree->SetAlias("ye","int(y1e+(-25))");
TCut cde = "de < 15+0.004*xesc && de > -20";
tree->Scan("x1:xe:y1:ye:int(de)",cde && cm ,"",500,1);
*********************************************************************************** * Row * Instance * x1 * xe * y1 * ye * int(de) * *********************************************************************************** * 42 * 0 * 11 * 3166 * 17 * 3792 * 10 * * 42 * 1 * 12 * 638 * 14 * 479 * 10 * * 42 * 2 * 8 * 478 * * 0 * 10 * * 47 * 0 * 26 * 1307 * 23 * 1308 * -3 * * 47 * 1 * 29 * 419 * 21 * 422 * -3 * * 78 * 0 * 25 * 457 * 27 * 457 * 0 * * 78 * 1 * 27 * 403 * 20 * 403 * 0 * * 102 * 0 * 13 * 2230 * 9 * 2231 * 1 * * 102 * 1 * 10 * 1882 * 16 * 1880 * 1 * * 115 * 0 * 18 * 944 * 3 * 945 * 7 * * 115 * 1 * 12 * 492 * 28 * 490 * 7 * * 115 * 2 * 10 * 389 * 11 * 383 * 7 * * 123 * 0 * 26 * 911 * 16 * 909 * 0 * * 123 * 1 * 28 * 485 * 9 * 487 * 0 * * 130 * 0 * 6 * 956 * 12 * 856 * -3 * * 130 * 1 * 1 * 552 * 29 * 552 * -3 * * 130 * 2 * * 0 * 13 * 103 * -3 * * 161 * 0 * 18 * 1461 * 28 * 1461 * 0 * * 161 * 1 * 25 * 650 * 5 * 650 * 0 * * 171 * 0 * 24 * 2139 * 6 * 2374 * 21 * * 171 * 1 * 25 * 243 * 5 * 106 * 21 * * 171 * 2 * 11 * 119 * * 0 * 21 * * 175 * 0 * 18 * 626 * 4 * 626 * 4 * * 175 * 1 * 19 * 529 * 3 * 528 * 4 * * 175 * 2 * 20 * 507 * 20 * 504 * 4 * * 187 * 0 * 2 * 652 * 14 * 652 * 3 * * 187 * 1 * 12 * 562 * 6 * 561 * 3 * * 187 * 2 * 11 * 538 * 5 * 450 * 3 * * 187 * 3 * * 0 * 4 * 85 * 3 * * 188 * 0 * 16 * 2537 * 18 * 2541 * -1 * * 188 * 1 * 13 * 508 * 23 * 508 * -1 * * 188 * 2 * 1 * 417 * 2 * 416 * -1 * * 255 * 0 * 12 * 3643 * 11 * 3641 * 0 * * 255 * 1 * 25 * 966 * 8 * 968 * 0 * * 265 * 0 * 4 * 2042 * 17 * 2042 * 10 * * 265 * 1 * 28 * 752 * 23 * 1277 * 10 * * 265 * 2 * 27 * 535 * * 0 * 10 * * 278 * 0 * 12 * 1366 * 12 * 1367 * 0 * * 278 * 1 * 8 * 951 * 17 * 949 * 0 * * 284 * 0 * 21 * 3806 * 14 * 3803 * 3 * * 284 * 1 * 17 * 190 * 24 * 190 * 3 * * 293 * 0 * 23 * 3500 * 18 * 3498 * 2 * * 293 * 1 * 26 * 420 * 15 * 419 * 2 * * 343 * 0 * 13 * 2062 * 26 * 2063 * 2 * * 343 * 1 * 28 * 1256 * 15 * 1253 * 2 * * 362 * 0 * 18 * 2861 * 16 * 2860 * 0 * * 362 * 1 * 26 * 431 * 13 * 433 * 0 * * 367 * 0 * 9 * 5600 * 14 * 5595 * 10 * * 367 * 1 * 11 * 240 * 26 * 235 * 10 * * 376 * 0 * 8 * 788 * 21 * 788 * 3 * * 376 * 1 * 13 * 730 * 13 * 728 * 3 * * 376 * 2 * 15 * 436 * 23 * 435 * 3 * * 382 * 0 * 25 * 4469 * 12 * 4466 * 0 * * 382 * 1 * 16 * 422 * 8 * 424 * 0 * * 388 * 0 * 12 * 1813 * 18 * 1807 * 5 * * 388 * 1 * 5 * 505 * 24 * 503 * 5 * * 388 * 2 * 13 * 165 * 17 * 168 * 5 * * 419 * 0 * 10 * 4040 * 14 * 4040 * 1 * * 419 * 1 * 12 * 378 * 4 * 376 * 1 * * 419 * 2 * 6 * 111 * 5 * 112 * 1 * * 425 * 0 * 21 * 4182 * 0 * 4179 * 0 * * 425 * 1 * 25 * 433 * 19 * 348 * 0 * * 425 * 2 * * 0 * 18 * 89 * 0 * * 429 * 0 * 13 * 3906 * 17 * 6700 * 22 * * 429 * 1 * 14 * 2820 * 7 * 85 * 22 * * 429 * 2 * 6 * 81 * * 0 * 22 * *********************************************************************************** ==> 66 selected entries
Type <CR> to continue or q to quit ==> Type <CR> to continue or q to quit ==>
tree->Scan("x1:xe:y1:ye:int(de)",cde && cm ,"",500,500);
*********************************************************************************** * Row * Instance * x1 * xe * y1 * ye * int(de) * *********************************************************************************** * 517 * 0 * 19 * 1058 * 2 * 1058 * 0 * * 517 * 1 * 10 * 673 * 12 * 528 * 0 * * 517 * 2 * 9 * 502 * 9 * 500 * 0 * * 517 * 3 * * 0 * 17 * 147 * 0 * * 519 * 0 * 29 * 2434 * 16 * 2436 * -1 * * 519 * 1 * 22 * 706 * 5 * 703 * -1 * * 519 * 2 * 23 * 595 * 15 * 598 * -1 * * 539 * 0 * 21 * 1014 * 9 * 1013 * 1 * * 539 * 1 * 1 * 474 * 13 * 472 * 1 * * 539 * 2 * 13 * 451 * 7 * 451 * 1 * * 593 * 0 * 15 * 563 * 15 * 754 * 4 * * 593 * 1 * 3 * 516 * 26 * 562 * 4 * * 593 * 2 * 2 * 242 * * 0 * 4 * * 610 * 0 * 16 * 6635 * 13 * 4559 * 15 * * 610 * 1 * 20 * 352 * 12 * 2059 * 15 * * 610 * 2 * * 0 * 15 * 353 * 15 * * 613 * 0 * 26 * 619 * 18 * 618 * 1 * * 613 * 1 * 22 * 548 * 25 * 547 * 1 * * 639 * 0 * 5 * 3731 * 23 * 3734 * -4 * * 639 * 1 * 13 * 413 * 18 * 415 * -4 * * 670 * 0 * 14 * 511 * 24 * 676 * 5 * * 670 * 1 * 12 * 272 * 8 * 506 * 5 * * 670 * 2 * 11 * 238 * * 0 * 5 * * 670 * 3 * 15 * 166 * * 0 * 5 * * 684 * 0 * 14 * 4577 * 17 * 4576 * 6 * * 684 * 1 * 23 * 121 * 10 * 120 * 6 * * 684 * 2 * 27 * 105 * 29 * 100 * 6 * * 687 * 0 * 30 * 700 * 18 * 694 * 9 * * 687 * 1 * 29 * 606 * 12 * 603 * 9 * * 695 * 0 * 3 * 1574 * 0 * 1158 * 0 * * 695 * 1 * 17 * 595 * 14 * 595 * 0 * * 695 * 2 * * 0 * 1 * 415 * 0 * * 718 * 0 * 13 * 5352 * 15 * 5204 * 0 * * 718 * 1 * * 0 * 19 * 149 * 0 * * 720 * 0 * 20 * 633 * 11 * 633 * 0 * * 720 * 1 * 17 * 603 * 10 * 601 * 0 * * 728 * 0 * 10 * 1010 * 1 * 1008 * 1 * * 728 * 1 * 8 * 803 * 3 * 802 * 1 * * 728 * 2 * 13 * 423 * 20 * 423 * 1 * * 739 * 0 * 21 * 1154 * 23 * 1155 * 4 * * 739 * 1 * 2 * 525 * 0 * 869 * 4 * * 739 * 2 * 1 * 349 * * 0 * 4 * * 789 * 0 * 24 * 600 * 11 * 595 * 4 * * 789 * 1 * 16 * 430 * 21 * 431 * 4 * * 858 * 0 * 18 * 7000 * 20 * 7004 * -7 * * 858 * 1 * 14 * 168 * 15 * 171 * -7 * * 864 * 0 * 22 * 5623 * 8 * 4075 * 23 * * 864 * 1 * 19 * 138 * 9 * 1662 * 23 * * 891 * 0 * 4 * 609 * 16 * 607 * 3 * * 891 * 1 * 14 * 506 * 13 * 505 * 3 * * 902 * 0 * 12 * 623 * 13 * 623 * 0 * * 902 * 1 * 10 * 340 * 6 * 340 * 0 * * 904 * 0 * 24 * 5044 * 7 * 5043 * 1 * * 904 * 1 * 17 * 517 * 19 * 516 * 1 * * 912 * 0 * 18 * 3222 * 13 * 4597 * 17 * * 912 * 1 * 17 * 1392 * 10 * 194 * 17 * * 912 * 2 * 24 * 194 * * 0 * 17 * * 964 * 0 * 7 * 4108 * 5 * 4106 * 3 * * 964 * 1 * 14 * 455 * 15 * 454 * 3 * * 982 * 0 * 4 * 3917 * 10 * 3913 * 4 * * 982 * 1 * 24 * 375 * 13 * 376 * 4 * * 982 * 2 * 16 * 91 * 20 * 90 * 4 * * 994 * 0 * 26 * 1094 * 10 * 1244 * 11 * * 994 * 1 * 18 * 712 * 2 * 710 * 11 * * 994 * 2 * 17 * 520 * 21 * 515 * 11 * * 994 * 3 * 27 * 153 * * 0 * 11 * *********************************************************************************** ==> 66 selected entries
Type <CR> to continue or q to quit ==> Type <CR> to continue or q to quit ==>