1、粒子物理与核物理实验中的数据分析,杨振伟 清华大学第五讲:ROOT在数据分析中的应用(3),2,上讲摘要,ROOT的TTree类TTree *tree = new TTree(“tree”,”mytree”);tree-Branch(“br1”,3,本讲要点,直方图的运算Add,Divide,. ROOT中直方图拟合h1-Fit(); ROOT小结,4,一维直方图之间的操作(1),相加,rootTH1F *h3=new TH1F(*h1); rooth3-Add(h1,h2,a,b);,常用于相同实验的数据叠加,增加统计量。 a*h1+b*h2, 一般a=b=1,相减,rootTH1F *h3
2、=new TH1F(*h1); rooth3-Sumw2(); rooth3-Add(h1,h2,a,-b);,常用于从实验测量的分布中,扣除本底得到纯信号的分布。 a*h1-b*h2, 一般a=-b=1,图形归一化,rootFloat_t norm=1000;rooth1-Scale(norm/h1-Integral();rooth2-Scale(norm/h2-Integral();rooth1-Draw(); h2-Draw(“same”) ;,常用于比较两种分布,找出区别。 Scale后BinContent之和为norm,5,一维直方图之间的运算(2),相除,rootTH1F *h3=
3、new TH1F(*h1); rooth3-Sumw2(); rooth3-Divide(h1,h2,a,b); rooth3-Divide(h1,h2,a,b,“B”);,常用于效率的计算。,相乘,rootTH1F *h3=new TH1F(*h1); rooth3-Sumw2(); rooth3-Multiply(h1,h2,a,b);,常用于对分布进行诸如效率等的修正。,6,一维直方图之间运算的误差,虽然ROOT都提供了较完善的一维直方图运算功能,但对最终结果的误差一定要仔细检查。很多情况下,用户需要从图中读出各频数数值与误差值,并确认运算无误。,7,拟合直方图(1),将鼠标放到直方图上
4、,右键,出现直方图操作选项,选择FitPanel,可以在FitPanel中选择拟合的各个选项,比如用什么函数拟合,拟合的区间,等等。,8,用默认的高斯拟合,并在Options菜单中选上Fit Parameters选项,可以看到拟合的结果。,拟合直方图(2),并不推荐这种拟合方式: 1)不适合自定义函数拟合 2)不适合批处理,9,hpx-Fit(“gaus”); hpx-Fit(“gaus”,“”,“”,-3,3);,拟合直方图(3) /home/yangzw/workdir/examples/Lec5/ex51.C,自定义拟合函数 TF1 *fcn = new TF1(“fcn“,“gaus“
5、,-3,3); hpx-Fit(fcn,”R”);,gStyle-SetOptFit();/设置拟合选项 拟合之前往往需要给出参数的大概值 fcn-SetParameters(500,mean,sigma); 拟合之后取出得到的拟合参数 Double_t mypar3; fcn-GetParameters(,运行:root -lroot 0 .L ex51.Croot 1 ex51r()root 2 ex51r2(),用自定义的函数拟合直方图,10,共振峰(Breit-Wigner分布)加上二次函数本底的拟合(一共6个参数) 这是$ROOTSYS/fit/FittingDemo.C的简化 先自
6、定义本底函数(background)和共振峰函数(lorentianPeak),再定义这两个函数的和为拟合函数:fitFunction 利用fitFunction定义TF1,拟合直方图(3) /home/yangzw/workdir/examples/Lec5/ex52.C,这里指定函数区间为0-3,6个参数,运行:root -lroot 0 .L ex52.C,注意TLegend的使用,TF1 *fitFcn = new TF1(“fitFcn“,fitFunction,0,3,6);,fitFcn-SetParameter(4,0.2); 为某个参数设初值(width) fitFcn-Se
7、tParameter(5,1); (peak ),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();用TC
8、hain分析相同格式的数据文件。 直方图的运算,拟合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的运用,比如
9、当前/projects/yangzw/examples/Lec5/目录下有文件ex51.root,其中含有复杂的tree。可以用MakeClass或MakeSelector自动产生分析文件和头文件:,root 0 TFile f(“ex51.root“); root 1 .ls TFile* ex51.rootTFile* ex51.rootKEY: TTree t4;1 Reconst events root 2 t4-MakeClass(); 或: t4-MakeClass(“MyClass”);,MakeSelector的用法类似: root 0 TFile f(“ex51.root“)
10、; 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,习题,练习需要的roo
11、t文件都存放在下面目录里: /home/yangzw/workdir/examples/Lec5/exercise/ 1. 查看该double_gaus.root文件。其中存储了名为tree1的TTree。画出tree1的pz分布,并对该分布进行拟合,在图上显示出拟合的结果,并在屏幕上打印出拟合结果。(提示:该分布为两个高斯的叠加,可以自定义一个包含6个参数的TF1进行拟合,分布比较复杂的时候,需要先估计参数的大概值,为拟合函数预设估计值。)思考:假设函数fun=p0*exp(-(x-p1)2/2/p22)+p3*exp(-(x-p4)2/2/p52)由拟合得到的结果,比较两个高斯的份额 2.
12、 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目录中的例子 http:/root.cern.ch/tutorials.html中与Fit有关的例子 http:/root.cern.ch/howto.html中与Fit有关的例子,