资源描述:
《粒子物理与核物理实验中的数据分析3502》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、粒子物理与核物理实验中的数据分析杨振伟清华大学第五讲:ROOT在数据分析中的应用(3)上讲摘要ROOT的TTree类TTree*tree=newTTree(“tree”,”mytree”);tree->Branch(“br1”,&br1,”Br1/F”);填充tree,将tree写入root文件tree->Fill();TFile*f=newTFile(“f1.root”,”recreate”);tree->Write();查看root文件中tree的信息TFile*f=newTFile(“f1.root”);f->ls();TTree*tree=(T
2、Tree*)f->Get(“tree”);tree->Scan(),tree->Show(i),tree->Print()处理tree格式相同的多个文件root文件:TChainTChain*chain=newTChain();chain->Add(“f1.root/tree”);2本讲要点直方图的运算Add,Divide,...ROOT中直方图拟合h1->Fit();ROOT小结3一维直方图之间的操作(1)相加root>TH1F*h3=newTH1F(*h1);root>h3->Add(h1,h2,a,b);常用于相同实验的数据叠加,增加统计量。a*
3、h1+b*h2,一般a=b=1相减root>TH1F*h3=newTH1F(*h1);root>h3->Sumw2();root>h3->Add(h1,h2,a,-b);常用于从实验测量的分布中,扣除本底得到纯信号的分布。a*h1-b*h2,一般a=-b=1图形归一化root>Float_tnorm=1000;root>h1->Scale(norm/h1->Integral());root>h2->Scale(norm/h2->Integral());root>h1->Draw();h2->Draw(“same”);常用于比较两种分布,找出区别。Sca
4、le后BinContent之和为norm4一维直方图之间的运算(2)相除root>TH1F*h3=newTH1F(*h1);root>h3->Sumw2();root>h3->Divide(h1,h2,a,b);root>h3->Divide(h1,h2,a,b,“B”);常用于效率的计算。相乘root>TH1F*h3=newTH1F(*h1);root>h3->Sumw2();root>h3->Multiply(h1,h2,a,b);常用于对分布进行诸如效率等的修正。5一维直方图之间运算的误差虽然ROOT都提供了较完善的一维直方图运算功能,但对最终
5、结果的误差一定要仔细检查。很多情况下,用户需要从图中读出各频数数值与误差值,并确认运算无误。6拟合直方图(1)将鼠标放到直方图上,右键,出现直方图操作选项,选择FitPanel,可以在FitPanel中选择拟合的各个选项,比如用什么函数拟合,拟合的区间,等等。7用默认的高斯拟合,并在Options菜单中选上FitParameters选项,可以看到拟合的结果。拟合直方图(2)并不推荐这种拟合方式:1)不适合自定义函数拟合2)不适合批处理拟合结果给出了高斯分布的3个参数:常系数、均值、均方差,以及拟合的好坏chi2/ndf8hpx->Fit(“gaus”)
6、;hpx->Fit(“gaus”,“”,“”,-3,3);拟合直方图(3)/home/yangzw/workdir/examples/Lec5/ex51.C自定义拟合函数TF1*fcn=newTF1("fcn","gaus",-3,3);hpx->Fit(fcn,”R”);gStyle->SetOptFit();//设置拟合选项拟合之前往往需要给出参数的大概值fcn->SetParameters(500,mean,sigma);拟合之后取出得到的拟合参数Double_tmypar[3];fcn->GetParameters(&mypar[0]);运行:
7、root-lroot[0].Lex51.Croot[1]ex51r()root[2]ex51r2()用自定义的函数拟合直方图9共振峰(Breit-Wigner分布)加上二次函数本底的拟合(一共6个参数)这是$ROOTSYS/fit/FittingDemo.C的简化先自定义本底函数(background)和共振峰函数(lorentianPeak),再定义这两个函数的和为拟合函数:fitFunction利用fitFunction定义TF1拟合直方图(3)/home/yangzw/workdir/examples/Lec5/ex52.C这里指定函数区间为0-
8、3,6个参数运行:root-lroot[0].Lex52.C注意TLegend的使用TF1*f