粒子物理与核物理实验中的数据分析杨振伟清华大学第五讲:ROOT在数据分析中的应用(3)2上讲摘要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文件查看root文件中tree的信息TFile*f=newTFile(“f1.root”);f-ls();TTree*tree=(TTree*)f-Get(“tree”);tree-Scan(),tree-Show(i),tree-Print()处理tree格式相同的多个文件root文件:TChainTChain*chain=newTChain();chain-Add(“f1.root/treename”);3本讲要点直方图的运算加减乘除:Add,Divide,...归一化:ScaleROOT中直方图拟合h1-Fit();含参数的ROOT脚本ROOT小结4直方图归一化(1)归一化后,不仅BinContent变化了,BinError也变化了直方图的归一化voidTH1::Scale(Double_tc1,Option_t*option):Scale默认c1=1,把直方图每个区间的值(BinContent)乘以c1假设sum=h1-Integral()h1-Scale(c1)之后,h1-Integral()=c1*sum不加参数时,h1-Scale()没有变化(默认c1=1)5直方图的归一化(2)root[0]TH1F*h1=newTH1F(h1,,100,-5,5);root[1]TH1F*h2=newTH1F(h2,,100,-5,5);root[2]h1-FillRandom(gaus,5000);root[3]h2-FillRandom(gaus,10000);root[4]floatnorm=1000;root[5]h1-Scale(norm/h1-Integral());root[6]h2-Scale(norm/h2-Integral());root[7]h1-Draw(e);root[8]h2-Draw(“esames”);归一化之后,h1或h2-Integral()=norm在同一张图上可以看出比较2个分布的差别。归一化常用于比较两种分布,找出区别。所以,将2个直方图归一化到积分相同进行比较才直观。注意Draw()函数的选项6直方图四则运算(1)重要提示:1.对直方图进行四则运算操作,一定要想明白运算的意义比如两个直方图的相加与两个随机变量的卷积有什么区别2.两个直方图的四则运算,区间大小和区间数相同才有意义四则运算加减乘除分别对应统计量(BinContent)的相加、相减、相乘、相除3.如果需要正确处理统计误差,需要在对ROOT脚本中调用TH1的某个静态成员函数,即TH1::SetDefaultSumw2();voidSetDefaultSumw2(Bool_tsumw2=kTRUE)//staticfunction.Whenthisstaticfunctioniscalledwithsumw2=kTRUE,allnewhistogramswillautomaticallyactivatethestorageofthesumofsquaresoferrors,ieTH1::Sumw2isautomaticallycalled.7直方图的四则运算(2)221212()nnσσσ=+=+误差:假设h1和h2独立......root[1]TH1::SetDefaultSumw2();root[1]TH1F*h3=newTH1F(*h1);root[2]h3-Add(h1,h2,a,b);结果:h3的BinContent被a*h1+b*h2替换,一般a=b=1相加:常用于相同实验的数据叠加,增加统计量。......root[1]TH1F*h3=newTH1F(*h1);root[2]h3-Sumw2();//也可在定义h3前TH1::SetDefaultSumw2();root[3]h3-Add(h1,h2,a,-b);结果:h3的BinContent被a*h1+b*h2替换,一般a=-b=1相减:常用于从实验测量的分布中扣除本底。8直方图的四则运算(3)相除root[1]TH1F*h3=newTH1F(*h1);root[2]h3-Sumw2();root[3]h3-Divide(h1,h2,a,b);root[4]h3-Divide(h1,h2,a,b);常用于效率的计算。常用于效率的计算。相乘常用于对分布进行诸如效率等的修正。rootTH1F*h3=newTH1F(*h1);rooth3-Sumw2();rooth3-Multiply(h1,h2,a,b);常用于对分布进行诸如效率等的修正。121211nnnnσ=+121211(h1h2)nnnnσ=+和独立思考:如果h1和h2不独立,怎么办?比如h1包含于h211222(1)nnnnnσ−=二项分布误差root[4]h3-Divide(h1,h2,a,b,B);9直方图四则运算的误差处理0虽然ROOT都提供了较完善的一维直方图运算功能,但对昀终结果的误差一定要仔细检查。很多情况下,用户需要从图中读出各频数数值与误差值,并确认运算无误。包括归一化和加减乘除在内,如果希望使用直方图的误差,都需要调用TH1::SetDefaultSumw2();或者,对每个直方图(如hist)调用hist-Sumw2();0虽然ROOT都提供了较完善的一维直方图运算功能,但对昀终结果的误差一定要仔细检查。很多情况下,用户需要从图中读出各频数数值与误差值,并确认运算无误。包括归一化和加减乘除在内,如果希望使用直方图的误差,都需要调用TH1::SetDefaultSumw2();或者,对每个直方图(如hist)调用hist-Sumw2();10拟合直方图(1)将鼠标放到直方图上,右键,出现直方图操作选项,选择FitPanel,可以在FitPanel中选择拟合的各个选项,比如用什么函数拟合,拟合的区间,等等。将鼠标放到直方图上,右键,出现直方图操作选项,选择FitPanel,可以在FitPanel中选择拟合的各个选项,比如用什么函数拟合,拟合的区间,等等。11用默认的高斯拟合,并在Options菜单中选上FitParameters选项,可以看到拟合的结果。用默认的高斯拟合,并在Options菜单中选上FitParameters选项,可以看到拟合的结果。拟合直方图(2)并不推荐这种拟合方式:1)不适合自定义函数拟合2)不适合批处理拟合结果给出了高斯分布的3个参数:常系数、均值、均方差,以及拟合的好坏chi2/ndf拟合结果给出了高斯分布的3个参数:常系数、均值、均方差,以及拟合的好坏chi2/ndf12下载本讲的例子cdyourworkdingdirectorycp-r~yangzw/examples/Lec5.或者下载到自己本地机器上:scp-rusername@166.111.32.64:/home/yangzw/examples/Lec5.wgethep.tsinghua.edu.cn/~yangzw/CourseDataAna/examples/Lec5.tgztar-zxvfLec5.tgz13hpx-Fit(gaus);hpx-Fit(gaus,,,-3,3);hpx-Fit(gaus);hpx-Fit(gaus,,,-3,3);自定义拟合函数TF1*fcn=newTF1(fcn,gaus,-3,3);hpx-Fit(fcn,”R”);拟合直方图(3)/home/yangzw/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]);运行:root-lroot[0].Lex51.Croot[1]ex51r()root[2]ex51r2()用自定义的函数拟合直方图14共振峰(Breit-Wigner分布)加上二次函数本底的拟合(一共6个参数)这是下面例子的简化版:$ROOTSYS/tutorials/fit/FittingDemo.C先自定义本底函数(background)和共振峰函数(lorentianPeak),再定义这两个函数的和为拟合函数:fitFunction利用fitFunction定义TF1函数共振峰(Breit-Wigner分布)加上二次函数本底的拟合(一共6个参数)这是下面例子的简化版:$ROOTSYS/tutorials/fit/FittingDemo.C先自定义本底函数(background)和共振峰函数(lorentianPeak),再定义这两个函数的和为拟合函数:fitFunction利用fitFunction定义TF1函数拟合直方图(3)/home/yangzw/examples/Lec5/ex52.C这里指定函数区间为0-3,6个参数运行:root-lroot[0].Lex52.C注意TLegend的使用TF1*fitFcn=newTF1(fitFcn,fitFunction,0,3,6);TF1*fitFcn=newTF1(fitFcn,fitFunction,0,3,6);fitFcn-SetParameter(4,0.2);为某个参数设初值(width)fitFcn-SetParLimits(5,0.6,1.4);为某参数设置取值范围15ROOT小结设定ROOT环境变量:ROOTSYS,PATH,LD_LIBRARY_PATH绘制各种直方图,散点图,数学函数TH1F,TH2F,TF1,...随机数产生子,各种分布gRandom-Rndm,Uniform,Gaus,Exp,...创建、保存root文件TFile*f=newTFile(myfile.root”,”recreate);f-Write();TTree,TChain的使用TTree*mytree=newTTree(mytree”,”mytree);mytree-Branch(........);用TChain分析相同格式的数据文件。直方图的运算,拟合h1-Fit(function_name);16ROOT的重要功能或用法(1)ROOT手册13、14章分别是数学库和线性代数,提供很多数学功能,比如Lorentz矢量的操作,特殊函数,矩阵求解运算,求极值等等ROOT手册第4章介绍Graphs,适用于不等距数据的图形分析(当然也可以构造不等bin的直方图)RooFit,昀大似然法拟合等神经网络分析方法,TMVA(多元数据分析)ROOT中使用PYTHIA、Geant3/4图形接口...17ROOT的重要功能或用法(2)MakeClass,MakeSelector的运用比如当前/home/yangzw/examples/Lec5/目录下有文件ex51.root,其中含有复杂的tree。可以用MakeClass或MakeSelector自动产生分析文件和头文件:root[0]TFilef(ex51.root);root[1].lsTFile**ex51.r