//%jsroot on
TFile *ipf=new TFile("./tracking/homework2.1.root");
TTree *tree=(TTree*) ipf->Get("tree");
TCanvas *c1=new TCanvas("c1","c1");
//双高斯
TF1 *total2=new TF1("total2","gaus(0)+gaus(3)");
TF1 *g1 = new TF1("g1","gaus");
TF1 *g2 = new TF1("g2","gaus");
TF1 *total=new TF1("total","gaus(0)+gaus(3)");
TH1F *hdx;
Double_t sigma;
tree->Draw("dx[0]>>hdx0(200,-5,5)");
hdx0=(TH1F*)gROOT->FindObject("hdx0");
hdx0->Fit("g1","","",-1.5,1.5);
sigma=g1->GetParameter(2);
total->SetParameter(2,sigma);
total->SetParameter(5,5*sigma);//初始化,估计半宽为2*sigma;
hdx0->Fit("total");
gPad->SetLogy();
c1->Draw();//residual
tree->Draw("dx[1]>>hdx1(200,-5,5)");
hdx1=(TH1F*)gROOT->FindObject("hdx1");
hdx1->Fit("g1","","",-1.5,1.5);
sigma=g1->GetParameter(2);
total->SetParameter(2,sigma);
total->SetParameter(5,5*sigma);//初始化,估计半宽为2*sigma;
hdx1->Fit("total");
gPad->SetLogy();
c1->Draw();//residual
tree->Draw("dx[2]>>hdx2(200,-5,5)");
hdx2=(TH1F*)gROOT->FindObject("hdx2");
hdx2->Fit("g1","","",-1.5,1.5);
sigma=g1->GetParameter(2);
total->SetParameter(2,sigma);
total->SetParameter(5,5*sigma);//初始化,估计半宽为2*sigma;
hdx2->Fit("total");
gPad->SetLogy();
c1->Draw();//residual
tree->Draw("dx[3]>>hdx3(200,-5,5)");
hdx3=(TH1F*)gROOT->FindObject("hdx3");
hdx3->Fit("g1","","",-1.5,1.5);
sigma=g1->GetParameter(2);
total->SetParameter(2,sigma);
total->SetParameter(5,5*sigma);//初始化,估计半宽为2*sigma;
hdx3->Fit("total");
gPad->SetLogy();
c1->Draw();//residual
tree->Draw("dx[4]>>hdx4(200,-5,5)");
hdx4=(TH1F*)gROOT->FindObject("hdx4");
hdx4->Fit("g1","","",-1.5,1.5);
sigma=g1->GetParameter(2);
total->SetParameter(2,sigma);
total->SetParameter(5,5*sigma);//初始化,估计半宽为2*sigma;
hdx4->Fit("total");
gPad->SetLogy();
c1->Draw();//residual
tree->Draw("dy[0]>>hdy0(200,-5,5)");
hdy0=(TH1F*)gROOT->FindObject("hdy0");
hdy0->Fit("g1","","",-1.5,1.5);
sigma=g1->GetParameter(2);
total->SetParameter(2,sigma);
total->SetParameter(5,5*sigma);//初始化,估计半宽为2*sigma;
hdy0->Fit("total");
gPad->SetLogy();
c1->Draw();//residual
tree->Draw("dy[1]>>hdy1(200,-5,5)");
hdy1=(TH1F*)gROOT->FindObject("hdy1");
hdy1->Fit("g1","","",-1.5,1.5);
sigma=g1->GetParameter(2);
total->SetParameter(2,sigma);
total->SetParameter(5,5*sigma);//初始化,估计半宽为2*sigma;
hdy1->Fit("total");
gPad->SetLogy();
c1->Draw();//residual
tree->Draw("dy[2]>>hdy2(200,-5,5)");
hdy2=(TH1F*)gROOT->FindObject("hdy2");
hdy2->Fit("g1","","",-1.5,1.5);
sigma=g1->GetParameter(2);
total->SetParameter(2,sigma);
total->SetParameter(5,5*sigma);//初始化,估计半宽为2*sigma;
hdy2->Fit("total");
gPad->SetLogy();
c1->Draw();//residual
tree->Draw("dy[3]>>hdy3(200,-5,5)");
hdy3=(TH1F*)gROOT->FindObject("hdy3");
hdy3->Fit("g1","","",-1.5,1.5);
sigma=g1->GetParameter(2);
total->SetParameter(2,sigma);
total->SetParameter(5,5*sigma);//初始化,估计半宽为2*sigma;
hdy3->Fit("total");
gPad->SetLogy();
c1->Draw();//residual
tree->Draw("dy[4]>>hdy4(200,-5,5)");
hdy4=(TH1F*)gROOT->FindObject("hdy4");
hdy4->Fit("g1","","",-1.5,1.5);
sigma=g1->GetParameter(2);
total->SetParameter(2,sigma);
total->SetParameter(5,5*sigma);//初始化,估计半宽为2*sigma;
hdy4->Fit("total");
gPad->SetLogy();
c1->Draw();//residual
PS:dx中零附近的突起,可能是在选择PPAC策略时,仅两个PPAC参与径迹重构的事件;
gPad->SetLogy(0);
tree->Draw("dx[0]:dx[2]>>(40,-40,40,40,-40,40)");
c1->Draw();
gPad->SetLogy(0);
tree->Draw("dx[0]:dx[2]>>(40,-40,40,40,-40,40)","NumX==3&&WhichX[0]==0&&WhichX[1]==2&&WhichX[2]==4");
c1->Draw();
PS:在探测器组合固定下,关联谱比较干净!!!
tree->Draw("c2ny:dy[0]>>hh(40,-10,10,200,0,1000)","","colz");
c1->SetLogy(0);
c1->Draw();//从chi2/ndf图上可看出,部分事件的径迹拟合误差很大,这部分要在后续数据处理中去掉。
PS:残差来源不同,故有多种关联的曲线
tree->Draw("c2ny:dy[0]>>hh(40,-10,10,200,0,600)","NumY==3&&WhichY[0]==0&&WhichY[1]==2&&WhichY[2]==4","colz");
c1->SetLogy(0);
c1->Draw();//从chi2/ndf图上可看出,部分事件的径迹拟合误差很大,这部分要在后续数据处理中去掉。
tree->Draw("c2nx>>hh(200,0,1000)","","");
gPad->SetLogy();
c1->Draw();//从chi2/ndf图上可看出,部分事件的径迹拟合误差很大,这部分要在后续数据处理中去掉。
tree->Draw("c2ny>>hh(200,0,1000)","","");
gPad->SetLogy();
c1->Draw();//从chi2/ndf图上可看出,部分事件的径迹拟合误差很大,这部分要在后续数据处理中去掉。
!jupyter nbconvert homework2.1_Chi2 --to html