tree->Draw("y1hit:x1hit>>(6,0,6,6,0,6)","","colz");
gPad->SetLogz();
c1->Draw();
事件的整体特征
非相邻两重事件
相邻两重事件
三重事件
也可以清晰地看见有三个粒子入射的情况:
事件193: 其他:
事件192:粒子1(2,14),粒子2((12,11),(6,5,7))
总结
总结
示例代码
Int_t x1h,y1h,x2h,y2h,x3h,y3h;//final multiplicity
Double_t x1ea[100],x2ea[100],x3ea[100];//x-energy
Double_t y1ea[100],y2ea[100],y3ea[100];//y-energy
Int_t x1sa[100],x2sa[100],x3sa[100];//x-strip
Int_t y1sa[100],y2sa[100],y3sa[100];//y-strip
Int_t flag1,flag2,flag3;//event flag
////////////////////////////////////
//one-one DSSD1
if(x1hit==1 && y1hit==1 && abs(sx1e-sy1e)<10) {
x1h=1;y1h=1;
x1ea[0]=x1e[0]; x1sa[0]=x1s[0];
y1ea[0]=y1e[0]; y1sa[0]=y1s[0];
flag1=111;
}
////////////////////////////////////
////////////////////////////////////
//two-two DSSD1
if(x1hit==y1hit && x1hit==2) {
if(abs(x1e[0]-y1e[0])<10 && abs(x1e[1]-y1e[1])<10) {
x1h=2;y1h=2;
for(int i=0;i<2;i++) {
x1ea[i]=x1e[i]; x1sa[i]=x1s[i];
y1ea[i]=y1e[i]; y1sa[i]=y1s[i];
}
flag1=222;
}
else if(sx1e-sy1e>-10 && sx1e-sy1e<60) {
if(abs(x1s[0]-x1s[1])==1 && abs(y1s[0]-y1s[1])==1) {
x1h=1;y1h=1;
x1ea[0]=x1e[0]+x1e[1];
x1sa[0]=x1s[0];
y1ea[0]=y1e[0]+y1e[1];
y1sa[0]=y1s[0];
flag1=221;
}
}
}
//////////////////////////////////////
//three-two DSSD1
if(x1hit==2 && y1hit==3) {
if(sx1e-sy1e>-35 && sx1e-sy1e<10) {
int ix=-1,iy=-1;
for(int i=0;i<2;i++)
for(int j=0;j<3;j++) {
if(abs(x1e[i]-y1e[j])<10) {//search x-y pair
ix=i;
iy=j;
}
}
if(ix>-1) {
x1sa[0]=-1; x1sa[1]=-1;
y1sa[0]=-1; y1sa[1]=-1;
x1ea[0]=x1e[ix]; x1sa[0]=x1s[ix];
y1ea[0]=y1e[iy]; y1sa[0]=y1s[iy];
if(ix==0) {
x1ea[1]=x1e[1]; x1sa[1]=x1s[1];
}
else {
x1ea[1]=x1e[0]; x1sa[1]=x1s[0];
}
if(iy==0 &&abs(y1s[1]-y1s[2])==1) {
y1ea[1]=y1e[1]+y1e[2]; y1sa[1]=y1s[1];
}
if(iy==1 &&abs(y1s[0]-y1s[2])==1) {
y1ea[1]=y1e[0]+y1e[2]; y1sa[1]=y1s[0];
}
if(iy==2 &&abs(y1s[0]-y1s[1])==1) {
y1ea[1]=y1e[0]+y1e[1]; y1sa[1]=y1s[0];
}
if(x1sa[0]>-1 && x1sa[1]>-1 &&y1sa[0]>-1 && y1sa[1]>-1) {
x1h=2;y1h=2;
flag1=232;
}
}
}
}
if(x1hit==3 && y1hit==2) {
if(sx1e-sy1e>5 && sx1e-sy1e<65) {
int ix=-1,iy=-1;
for(int i=0;i<3;i++)
for(int j=0;j<2;j++) {
if(abs(x1e[i]-y1e[j])<10) {//search x-y pair
ix=i;
iy=j;
}
}
if(ix>-1) {
x1sa[0]=-1; x1sa[1]=-1;
y1sa[0]=-1; y1sa[1]=-1;
x1ea[0]=x1e[ix]; x1sa[0]=x1s[ix];
y1ea[0]=y1e[iy]; y1sa[0]=y1s[iy];
if(iy==0) {
y1ea[1]=y1e[1]; y1sa[1]=y1s[1];
}
else {
y1ea[1]=y1e[0]; y1sa[1]=y1s[0];
}
if(ix==0 &&abs(x1s[1]-x1s[2])==1) {
x1ea[1]=x1e[1]+x1e[2]; x1sa[1]=x1s[1];
}
if(ix==1 &&abs(x1s[0]-x1s[2])==1) {
x1ea[1]=x1e[0]+x1e[2]; x1sa[1]=x1s[0];
}
if(ix==2 &&abs(x1s[0]-x1s[1])==1) {
x1ea[1]=x1e[0]+x1e[1]; x1sa[1]=x1s[0];
}
if(x1sa[0]>-1 && x1sa[1]>-1 &&y1sa[0]>-1 && y1sa[1]>-1) {
x1h=2;y1h=2;
flag1=232;
}
}
}
}
... ... ...
if((x1h>0 && x1h==x2h && x3h==0) || (x1h>0 && x1h==x2h && x2h==x3h)) tree->Fill();
按照如下条件重新进行多探测器之间事件匹配
!jupyter nbconvert example3_6.ipynb --to html