homework2.1-PPAC1A与PPAC3效率

  • 得到PPAC的x,y,x-y的探测效率;
  • 使用用阳极信号以及两种不同探测器组合,确定入射粒子数目;
  • 验证所求效率值相近;

打开root文件

In [1]:
%jsroot on
In [2]:
TFile *ipf=new TFile("./tracking/homework2.1.root");
TTree *tree=(TTree*) ipf->Get("tree");
TCanvas *c1=new TCanvas("c1","c1");

PPAC1A x, y, x-y效率

方法一:同一探测器使用阳极信号为标准

  • 阳极为分母,x-a,y-a,x-y-a作分子得到PPAC的效率
In [3]:
TCut c1atrack="abs(xxfit[0])<100 && abs(yyfit[0])<100";//拟合径迹穿过探测器的灵敏面积

TCut c1aanode="anode[0]>-999";//阳极有信号
TCut c1axa="abs(xx[0])<100 && anode[0]>-999";//x面有正确信号,即x面和阳极同时有信号
TCut c1aya="abs(yy[0])<100 && anode[0]>-999";//y面有正确信号,即y面和阳极同时有信号
TCut c1axya="abs(xx[0])<100 && abs(yy[0])<100 && anode[0]>-999";//xy面有正确信号,即xy面和阳极同时有信号
In [4]:
Long64_t N_track;
tree->Draw("yyfit[0]:xxfit[0]>>(200,-100,100,200,-100,100)",c1atrack,"colz");//fitted
N_track=tree->GetEntries( c1atrack);//得到给定条件下的计数。
cout<<N_track<<endl;
c1->Draw();
662177
In [5]:
Long64_t Na_det,Nxa_det, Nya_det,Nxya_det,Nxya1_det;
tree->Draw("yy[0]:xx[0]>>(200,-100,100,200,-100,100)",c1axya&&c1atrack,"colz");
Na_det=tree->GetEntries(c1aanode && c1atrack);//Anode 数目
Nxa_det=tree->GetEntries(c1axa && c1atrack);// cathod-x 数目
Nya_det=tree->GetEntries(c1aya && c1atrack);// cathod-y 数目
Nxya_det=tree->GetEntries(c1axa &&c1aya && c1atrack);//cathod-x && cathod-y 数目
Nxya1_det=tree->GetEntries(c1axya && c1atrack);//cathod-x-y 数目
cout<<Na_det<<" "<<Nxa_det<<" "<<Nya_det<<" "<<Nxya_det<<" "<<Nxya1_det<<endl;
c1->Draw();
656293 621173 602855 567741 567741
In [6]:
Double_t effa,effxa,effya,effxya2,effxya;effxya1;

effa=Double_t(Na_det)/N_track;
effxa=Double_t(Nxa_det)/N_track;//ex*ea
effya=Double_t(Nya_det)/N_track;//ey*ea
effxya=Double_t(Nxya_det)/N_track;//ex*ey*ea*ea
effxya1=Double_t(Nxya1_det)/N_track;//ex*ey*ea
effxya2=Double_t(Nxya_det)/N_track /effa;//ex*ey*ea*ea->ex*ey*ea

TString eff;
eff.Form("PPAC1A:\n eff_a=%.2f%%,\n eff_xa=%.2f%%, \n eff_ya=%.2f%%",effa*100,effxa*100,effya*100);
cout<<eff.Data()<<endl;
eff.Form("\n eff_xya=%.2f%% \n eff_xya1=%.2f%% \n eff_xya2=%.2f%%",effxya*100,effxya1*100,effxya2*100);
cout<<eff.Data()<<endl;
PPAC1A:
 eff_a=99.11%,
 eff_xa=93.81%, 
 eff_ya=91.04%

 eff_xya=85.74% 
 eff_xya1=85.74% 
 eff_xya2=86.51%

注意

TCut c1axa="abs(xx[0])<100 && anode[0]>-999";//x面有正确信号,即x面和阳极同时有信号
TCut c1aya="abs(yy[0])<100 && anode[0]>-999";//y面有正确信号,即y面和阳极同时有信号
TCut c1axya="abs(xx[0])<100 && abs(yy[0])<100 && anode[0]>-999";//xy面有正确信号,即xy面和阳极同时有信号
Nxya_det=tree->GetEntries(c1axa &&c1aya && c1atrack);//cathod-x && cathod-y 数目
Nxya1_det=tree->GetEntries(c1axya && c1atrack);//cathod-x-y 数目
  • xya与xya1两种条件相同,两者应该差一个effa效率才对???

方法二:任意两组拟合径迹,看PPAC1A上有多少数

由探测器组合:1B,2B,3,得到PPAC1A的x效率effx;

In [7]:
Int_t N_trackX_nodet;
TCut combine1X_nodet = "NumX == 3 && WhichX[0] == 1 && WhichX[1] == 3 && WhichX[2] == 4";//探测器组合1:1B,2B,3

tree->Draw("yyfit[0]:xxfit[0]>>(200,-100,100,200,-100,100)",c1atrack && combine1X_nodet,"colz");//fitted

N_trackX_nodet=tree->GetEntries( c1atrack && combine1X_nodet);//得到给定条件下的计数。
cout<<N_trackX_nodet<<endl;
c1->Draw();
1049
In [8]:
Int_t N_trackX_det;
TCut combine1X_det = "NumX == 4  && WhichX[0] == 0 && WhichX[1] == 1 && WhichX[2] == 3 && WhichX[3] == 4";//探测器组合1:1A,1B,2B,3

tree->Draw("yyfit[0]:xxfit[0]>>(200,-100,100,200,-100,100)",c1atrack && combine1X_det,"colz");//fitted

N_trackX_det=tree->GetEntries( c1atrack && combine1X_det);//得到给定条件下的计数。

cout<<N_trackX_det<<endl;
Double_t effx =Double_t( N_trackX_det)/(N_trackX_det+N_trackX_nodet);
cout<<"effx: "<<effx*100<<"%"<<endl;
c1->Draw();
16204
effx: 93.9199%

由探测器组合:1B,2B,3,得到PPAC1A的y效率effy;

In [9]:
Int_t N_trackY_nodet;
TCut combine1Y_nodet = "NumY == 3 && WhichY[0] == 1 && WhichY[1] == 3 && WhichY[2] == 4";//探测器组合1:1B,2B,3

tree->Draw("yyfit[0]:xxfit[0]>>(200,-100,100,200,-100,100)",c1atrack && combine1Y_nodet,"colz");//fitted

N_trackY_nodet=tree->GetEntries( c1atrack && combine1Y_nodet);//得到给定条件下的计数。
cout<<N_trackY_nodet<<endl;
c1->Draw();
1770
In [10]:
Int_t N_trackY_det;
TCut combine1Y_det = "NumY == 4  && WhichY[0] == 0 && WhichY[1] == 1 && WhichY[2] == 3 && WhichY[3] == 4";//探测器组合1:1A,1B,2B,3

tree->Draw("yyfit[0]:xxfit[0]>>(200,-100,100,200,-100,100)",c1atrack && combine1Y_det,"colz");//fitted
N_trackY_det=tree->GetEntries( c1atrack && combine1Y_det);//得到给定条件下的计数。

cout<<N_trackY_det<<endl;
Double_t effy =Double_t( N_trackY_det)/(N_trackY_det+N_trackY_nodet);
cout<<"effy: "<<effy*100<<"%"<<endl;
c1->Draw();
16155
effy: 90.1255%

由探测器组合:1B,2B,3,得到PPAC1A的xy效率effxy;

  • x面hit,同时有y
In [11]:
Int_t N_trackXY_det;
TCut WhichY0 = "WhichY[0] ==0";

tree->Draw("yyfit[0]:xxfit[0]>>(200,-100,100,200,-100,100)",c1atrack && combine1X_det && WhichY0,"colz");//fitted
N_trackXY_det=tree->GetEntries( c1atrack && combine1X_det && WhichY0);//得到给定条件下的计数。

cout<<N_trackXY_det<<endl;
Double_t effxy=Double_t( N_trackXY_det)/(N_trackX_det+N_trackX_nodet);
cout<<"effxy: "<<effxy*100<<"%"<<endl;
c1->Draw();
14725
effxy: 85.3475%
  • y面hit,同时有x
In [12]:
Int_t N_trackYX_det;
TCut WhichX0 = "WhichX[0] ==0";

tree->Draw("yyfit[0]:xxfit[0]>>(200,-100,100,200,-100,100)",c1atrack && combine1Y_det && WhichX0,"colz");//fitted
N_trackYX_det=tree->GetEntries( c1atrack && combine1Y_det && WhichX0);//得到给定条件下的计数。

cout<<N_trackYX_det<<endl;
Double_t effyx=Double_t( N_trackYX_det)/(N_trackY_det+N_trackY_nodet);
cout<<"effyx: "<<effyx*100<<"%"<<endl;
c1->Draw();
15187
effyx: 84.7252%

由探测器组合:1B,2B,3得到的PPAC1A的效率

In [13]:
cout<<"effx: "<<effx*100<<"%"<<endl;
cout<<"effy: "<<effy*100<<"%"<<endl;
cout<<"effxy: "<<effxy*100<<"%"<<endl;
cout<<"effyx: "<<effyx*100<<"%"<<endl;
effx: 93.9199%
effy: 90.1255%
effxy: 85.3475%
effyx: 84.7252%

PPAC3 x, y, x-y效率

方法一:同一探测器使用阳极信号为标准

  • 阳极为分母,x-a,y-a,x-y-a作分子得到PPAC的效率
In [14]:
TCut c5track="abs(xxfit[4])<100 && abs(yyfit[4])<100";//拟合径迹穿过探测器的灵敏面积

TCut c5anode="anode[4]>-999";//阳极有信号
TCut c5xa="abs(xx[4])<100 && anode[4]>-999";//x面有正确信号,即x面和阳极同时有信号
TCut c5ya="abs(yy[4])<100 && anode[4]>-999";//y面有正确信号,即y面和阳极同时有信号
TCut c5xya="abs(xx[4])<100 && abs(yy[4])<100 && anode[4]>-999";//xy面有正确信号,即xy面和阳极同时有信号
In [15]:
tree->Draw("yyfit[4]:xxfit[4]>>(200,-100,100,200,-100,100)",c5track,"colz");//fitted
N_track=tree->GetEntries( c5track);//得到给定条件下的计数。
cout<<N_track<<endl;
c1->Draw();
648400
In [16]:
tree->Draw("yy[4]:xx[4]>>(200,-100,100,200,-100,100)",c5xya&&c5track,"colz");
Na_det=tree->GetEntries(c5anode && c5track);//Anode 数目
Nxa_det=tree->GetEntries(c5xa && c5track);// cathod-x 数目
Nya_det=tree->GetEntries(c5ya && c5track);// cathod-y 数目
Nxya_det=tree->GetEntries(c5xa &&c5ya && c5track);//cathod-x && cathod-y 数目
Nxya1_det=tree->GetEntries(c5xya && c5track);//cathod-x-y 数目
cout<<Na_det<<" "<<Nxa_det<<" "<<Nya_det<<" "<<Nxya_det<<" "<<Nxya1_det<<endl;
c1->Draw();
364260 337920 334118 307795 307795
In [17]:
effa=Double_t(Na_det)/N_track;
effxa=Double_t(Nxa_det)/N_track;//ex*ea
effya=Double_t(Nya_det)/N_track;//ey*ea
effxya=Double_t(Nxya_det)/N_track;//ex*ey*ea*ea
effxya1=Double_t(Nxya1_det)/N_track;//ex*ey*ea
effxya2=Double_t(Nxya_det)/N_track /effa;//ex*ey*ea*ea->ex*ey*ea

eff.Form("PPAC3:\n eff_a=%.2f%%,\n eff_xa=%.2f%%, \n eff_ya=%.2f%%",effa*100,effxa*100,effya*100);
cout<<eff.Data()<<endl;
eff.Form("\n eff_xya=%.2f%% \n eff_xya1=%.2f%% \n eff_xya2=%.2f%%",effxya*100,effxya1*100,effxya2*100);
cout<<eff.Data()<<endl;
PPAC3:
 eff_a=56.18%,
 eff_xa=52.12%, 
 eff_ya=51.53%

 eff_xya=47.47% 
 eff_xya1=47.47% 
 eff_xya2=84.50%

方法二:任意两组拟合径迹,看PPAC3上有多少数

由探测器组合:1A,1B,2B,得到PPAC3的x效率effx;

In [18]:
TCut combine5X_nodet = "NumX == 3 && WhichX[0] == 0 && WhichX[1] == 1 && WhichX[2] == 3";//探测器组合1:1A,1B,2B

tree->Draw("yyfit[4]:xxfit[4]>>(200,-100,100,200,-100,100)",c5track && combine5X_nodet,"colz");//fitted

N_trackX_nodet=tree->GetEntries( c5track && combine5X_nodet);//得到给定条件下的计数。
cout<<N_trackX_nodet<<endl;
c1->Draw();
15773
In [19]:
TCut combine5X_det = "NumX == 4  && WhichX[0] == 0 && WhichX[1] == 1 && WhichX[2] == 3 && WhichX[3] == 4";//探测器组合1:1A,1B,2B,3

tree->Draw("yyfit[4]:xxfit[4]>>(200,-100,100,200,-100,100)",c5track && combine5X_det,"colz");//fitted

N_trackX_det=tree->GetEntries( c5track && combine5X_det);//得到给定条件下的计数。

cout<<N_trackX_det<<endl;
effx =Double_t( N_trackX_det)/(N_trackX_det+N_trackX_nodet);
cout<<"effx: "<<effx*100<<"%"<<endl;
c1->Draw();
16201
effx: 50.6693%

由探测器组合:1A,1B,2B,得到PPAC3的y效率effy;

In [20]:
TCut combine5Y_nodet = "NumY == 3 && WhichY[0] == 0 && WhichY[1] == 1 && WhichY[2] == 3";///探测器组合1:1A,1B,2B,

tree->Draw("yyfit[4]:xxfit[4]>>(200,-100,100,200,-100,100)",c5track && combine5Y_nodet,"colz");//fitted

N_trackY_nodet=tree->GetEntries( c5track && combine5Y_nodet);//得到给定条件下的计数。
cout<<N_trackY_nodet<<endl;
c1->Draw();
15930
In [21]:
TCut combine5Y_det = "NumY == 4  && WhichY[0] == 0 && WhichY[1] == 1 && WhichY[2] == 3 && WhichY[3] == 4";//探测器组合1:1A,1B,2B,3

tree->Draw("yyfit[4]:xxfit[4]>>(200,-100,100,200,-100,100)",c5track && combine5Y_det,"colz");//fitted
N_trackY_det=tree->GetEntries( c5track && combine5Y_det);//得到给定条件下的计数。

cout<<N_trackY_det<<endl;
effy =Double_t( N_trackY_det)/(N_trackY_det+N_trackY_nodet);
cout<<"effy: "<<effy*100<<"%"<<endl;
c1->Draw();
16151
effy: 50.3444%

由探测器组合:1A,1B,2B,得到PPAC3的xy效率effxy;

  • x面hit,同时有y
In [22]:
TCut WhichY4 = "WhichY[0] ==4||  WhichY[1] ==4|| WhichY[2] ==4|| WhichY[3] ==4|| WhichY[4] ==4";

tree->Draw("yyfit[4]:xxfit[4]>>(200,-100,100,200,-100,100)",c5track && combine5X_det && WhichY4,"colz");//fitted
N_trackXY_det=tree->GetEntries( c5track && combine5X_det && WhichY4);//得到给定条件下的计数。

cout<<N_trackXY_det<<endl;
effxy=Double_t( N_trackXY_det)/(N_trackX_det+N_trackX_nodet);
cout<<"effxy: "<<effxy*100<<"%"<<endl;
c1->Draw();
10089
effxy: 31.5538%
  • y面hit,同时有x
In [23]:
TCut WhichX4 = "WhichX[0] ==4||  WhichX[1] ==4|| WhichX[2] ==4|| WhichX[3] ==4|| WhichX[4] ==4";

tree->Draw("yyfit[4]:xxfit[4]>>(200,-100,100,200,-100,100)",c5track && combine5Y_det && WhichX4,"colz");//fitted
N_trackYX_det=tree->GetEntries( c5track && combine5Y_det && WhichX4);//得到给定条件下的计数。

cout<<N_trackYX_det<<endl;
effyx=Double_t( N_trackYX_det)/(N_trackY_det+N_trackY_nodet);
cout<<"effyx: "<<effyx*100<<"%"<<endl;
c1->Draw();
10820
effyx: 33.7271%

由探测器组合:1B,2B,3得到的PPAC1A的效率

In [24]:
cout<<"effx: "<<effx*100<<"%"<<endl;
cout<<"effy: "<<effy*100<<"%"<<endl;
cout<<"effxy: "<<effxy*100<<"%"<<endl;
cout<<"effyx: "<<effyx*100<<"%"<<endl;
effx: 50.6693%
effy: 50.3444%
effxy: 31.5538%
effyx: 33.7271%

总结

PPAC1A-anode PPAC1A-det PPAC3-anode PPAC3-det
a 99.11 56.18
x 93.81 93.92 52.12 50.67
y 91.04 90.13 51.53 50.34
xy 85.74 85.35 47.47 31.55
yx 84.73 33.73
In [25]:
!jupyter nbconvert homework2.1_efficiency --to html
[NbConvertApp] Converting notebook homework2.1_efficiency.ipynb to html


[NbConvertApp] Writing 787485 bytes to homework2.1_efficiency.html