Download presentation
Presentation is loading. Please wait.
1
杨振伟 清华大学 第五讲:ROOT在数据分析中的应用(3)
粒子物理与核物理实验中的数据分析 杨振伟 清华大学 第五讲:ROOT在数据分析中的应用(3)
2
上讲摘要 ROOT的TTree类 TTree *tree = new TTree(“tree”,”mytree”);
tree->Branch(“br1”,&br1,”Br1/F”); 填充tree,将tree写入root文件 tree->Fill(); TFile *f = new TFile(“f1.root”,”recreate”); tree->Write(); 查看root文件中tree的信息 TFile *f = new TFile(“f1.root”); f->ls(); TTree *tree = (TTree*)f->Get(“tree”); tree->Scan(),tree->Show(i),tree->Print() 处理tree格式相同的多个文件root文件: TChain TChain *chain = new TChain(); chain->Add(“f1.root/tree”);
3
本讲要点 直方图的运算 Add,Divide,... ROOT中直方图拟合 h1->Fit(); ROOT小结
4
一维直方图之间的操作(1) 图形归一化 root>Float_t norm=1000;
常用于比较两种分布,找出区别。 Scale后BinContent之和为norm root>Float_t norm=1000; root>h1->Scale(norm/h1->Integral()); root>h2->Scale(norm/h2->Integral()); root>h1->Draw(); h2->Draw(“same”) ; 相加 常用于相同实验的数据叠加,增加统计量。 a*h1+b*h2, 一般a=b=1 root>TH1F *h3=new TH1F(*h1); root>h3->Add(h1,h2,a,b); 相减 常用于从实验测量的分布中,扣除本底得到纯信号的分布。 a*h1-b*h2, 一般a=-b=1 root>TH1F *h3=new TH1F(*h1); root>h3->Sumw2(); root>h3->Add(h1,h2,a,-b);
5
一维直方图之间的运算(2) 相除 root>TH1F *h3=new TH1F(*h1);
常用于效率的计算。 root>TH1F *h3=new TH1F(*h1); root>h3->Sumw2(); root>h3->Divide(h1,h2,a,b); root>h3->Divide(h1,h2,a,b,“B”); 相乘 常用于对分布进行诸如效率等的修正。 root>TH1F *h3=new TH1F(*h1); root>h3->Sumw2(); root>h3->Multiply(h1,h2,a,b);
6
一维直方图之间运算的误差 虽然ROOT都提供了较完善的一维直方图运算功能,但对最终结果的误差一定要仔细检查。很多情况下,用户需要从图中读出各频数数值与误差值,并确认运算无误。
7
拟合直方图(1) 将鼠标放到直方图上,右键,出现直方图操作选项,选择FitPanel,可以在FitPanel中选择拟合的各个选项,比如用什么函数拟合,拟合的区间,等等。
8
拟合直方图(2) 并不推荐这种拟合方式: 1)不适合自定义函数拟合 2)不适合批处理
用默认的高斯拟合,并在Options菜单中选上Fit Parameters选项,可以看到拟合的结果。 拟合结果给出了高斯分布的3个参数: 常系数、均值、均方差,以及拟合的好坏chi2/ndf 并不推荐这种拟合方式: 1)不适合自定义函数拟合 2)不适合批处理
9
拟合直方图(3) /home/yangzw/workdir/examples/Lec5/ex51.C
hpx->Fit(“gaus”); hpx->Fit(“gaus”,“”,“”,-3,3); 自定义拟合函数 TF1 *fcn = new TF1("fcn","gaus",-3,3); hpx->Fit(fcn,”R”); gStyle->SetOptFit();//设置拟合选项 拟合之前往往需要给出参数的大概值 fcn->SetParameters(500,mean,sigma); 拟合之后取出得到的拟合参数 Double_t mypar[3]; fcn->GetParameters(&mypar[0]); 运行:root -l root [0] .L ex51.C root [1] ex51r() root [2] ex51r2() 用自定义的函数拟合直方图
10
拟合直方图(3) /home/yangzw/workdir/examples/Lec5/ex52.C
共振峰(Breit-Wigner分布)加上二次函数本底的拟合(一共6个参数) 这是$ROOTSYS/fit/FittingDemo.C的简化 先自定义本底函数(background)和共振峰函数(lorentianPeak),再定义这两个函数的和为拟合函数:fitFunction 利用fitFunction定义TF1 TF1 *fitFcn = new TF1("fitFcn",fitFunction,0,3,6); 这里指定函数区间为0-3,6个参数 fitFcn->SetParameter(4,0.2); 为某个参数设初值(width) fitFcn->SetParameter(5,1); (peak ) 运行:root -l root [0] .L ex52.C 注意TLegend的使用
11
ROOT小结 设定ROOT环境变量: ROOTSYS,PATH,LD_LIBRARY_PATH 绘制各种直方图,散点图,数学函数
TH1F,TH2F,TF1,... 随机数产生子,各种分布 gRandom->Rndm,Uniform,Gaus,Exp,... 创建、保存root文件 TFile *f = new TFile(“myfile.root”,”recreate”); f->Write(); TTree, TChain的使用 TTree *mytree = new TTree(“mytree”,”my tree”); mytree->Branch( ); 用TChain分析相同格式的数据文件。 直方图的运算,拟合 h1->Fit(“function_name”);
12
ROOT的重要功能或用法(1) ROOT手册13、14章分别是数学库和线性代数,提供很多数学功能,比如Lorentz矢量的操作,特殊函数,矩阵求解运算,求极值等等 ROOT手册第4章介绍Graphs,适用于不等距数据的图形分析(当然也可以构造不等bin的直方图) RooFit,最大似然法拟合等 神经网络分析方法,TMVA(多元数据分析) ROOT中使用PYTHIA、Geant3/4 图形接口...
13
ROOT的重要功能或用法(2) MakeClass,MakeSelector的运用
比如当前/projects/yangzw/examples/Lec5/目录下有文件ex51.root,其中含有复杂的tree。可以用MakeClass或MakeSelector自动产生分析文件和头文件: root [0] TFile f("ex51.root"); root [1] .ls TFile** ex51.root TFile* ex51.root KEY: TTree t4;1 Reconst events root [2] t4->MakeClass(); 或: t4->MakeClass(“MyClass”); 自动产生以t4.h和t4.C文件, 或MyClass.h和MyClass.C文件。 类的定义以及Branch地址设定、分析框架都已经自动完成。 MakeSelector的用法类似: root [0] TFile f("ex51.root"); root [1] t4->MakeSelector(); 或 t4->MakeSelector(“MySelector”);
14
ROOT的重要功能或用法(3) 独立编译程序进行ROOT分析
尽管在ROOT环境中运行ROOT脚本很方便,但如果分析处理的东西比较复杂,需要长时间运行,独立编译运行比在ROOT环境中运行要快很多,大约有数量级的差别。 /home/yangzw/workdir/examples/Lec5/standalone目录是独立编译运行ROOT的例子。这实际上是SDA习题3.7c的一部分。 进入standalone目录后,gmake进行编译就可以运行。
15
习题 练习需要的root文件都存放在下面目录里: /home/yangzw/workdir/examples/Lec5/exercise/
1. 查看该double_gaus.root文件。其中存储了名为tree1的TTree。画出tree1的pz分布,并对该分布进行拟合,在图上显示出拟合的结果,并在屏幕上打印出拟合结果。 (提示:该分布为两个高斯的叠加,可以自定义一个包含6个参数的TF1进行拟合,分布比较复杂的时候,需要先估计参数的大概值,为拟合函数预设估计值。) 思考:假设函数fun=p0*exp(-(x-p1)^2/2/p2^2) +p3*exp(-(x-p4)^2/2/p5^2) 由拟合得到的结果,比较两个高斯的份额 2. hist.root中有两个直方图,对这两个直方图进行加减乘除运算。除法时,查看用”B”选项和不用“B”选项时误差的不同。 (提示:h1的事例包含于h2的事例,计算误差需要用”B”选项) 3. 利用1.root和2.root,将其中的px分别画到两个直方图h1,h2中。对h1,h2进行加减乘除运算,查看误差情况。比较调用与不调用Sumw2()的差别。
16
参考资料 ROOT手册第5章:Fitting Histogram $ROOTSYS/tutorials/fit目录中的例子
中与Fit有关的例子
Similar presentations