,Click to edit Master title styl,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,2019-6-29,谢谢观赏,粒子物理与核物理实验中的数据分析,xx,清华大学,第三讲:,ROOT,在数据分析中的应用,(1),1,谢谢观赏,2019-6-29,粒子物理与核物理实验中的数据分析xx1谢谢观赏2019-6-,2,上讲摘要,C+,基本概念,类的定义与实现,.,Linux,下用,g+,编译,C+,程序,g+,-o hello.exe-I ./src/*.cc,当前目录下输出 指定,include,目录 源文件,可执行文件,hello.exe,如,-I./include,用,makefile,进行,C+,编译,gmake,进行编译,gmake clean,清除编译结果,使用,ROOT,脚本,root-l hello.C,谢谢观赏,2019-6-29,2上讲摘要C+基本概念谢谢观赏2019-6-29,3,本讲要点,什么是,ROOT,?,登录,ROOT,环境和体验中心,ROOT,的语法简介,ROOT,的函数,直方图,随机数,文件,散点图,TF1,TH1I,TH1F,TH1D,TRandom(gRandom),TF2,TF3,TH2F,.,TFile,谢谢观赏,2019-6-29,3本讲要点什么是ROOT?谢谢观赏2019-6-29,4,什么是,ROOT,?,ROOT:Executive Summary,.provides a set of,OO frameworks,with,all,the functionality,needed to handle and analyse,large amounts of data,in a,very,efficient,way.,(,摘自,),关键字:面向对象的框架、所有功能、海量数据、非常有效,结论:很不谦虚!,谢谢观赏,2019-6-29,4什么是 ROOT?ROOT:Executive Sum,5,安装,ROOT(1),到,ROOT,主页下载需要的版本到指定目录。,比如要在,SLC3,系统的,/projects/yangzw,目录下安装,5.16.00,版本,(,注:最新版本的,ROOT,已经不为,SLC3,提供预编译版本了,而为,SLC4,和,SLC5,提供,),cd/projects/$USER,(,注:对用户,yangzw,$USER=yangzw),wget,tar zxvf root_v5.16.00.Linux.slc3.gcc3.2.3.tar.gz,设置,ROOT,的环境变量,export ROOTSYS=/projects/$USER/root,export PATH=$ROOTSYS/bin:$PATH,export LD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH,可以把上面这,3,行放到,$HOME/.login,或者,.bashrc,或者,.tcshrc,文件中,,这样每次登录到,Linux,系统,系统就自动设置,ROOT,的环境变量,这样,进入,linux,系统之后,在终端提示行输入:,root,或,root-l,即可进入,ROOT,环境。,谢谢观赏,2019-6-29,5安装ROOT(1)到ROOT主页下载需要的版本到指定目录。,6,安装,ROOT(2),如果是其它发行版的,Linux,,首先查看是否,ROOT,网站上是否有预编译好的程序包,一般情况下,官方提供,SLC4,和,SLC5,在各种不同,CPU,以及不同,gcc,版本下的二进制包,,ROOT,官网也提供包括,Solaris,以及,Mac OS X,以及,Windows,下的预编译包。,如果没有适合你的操作系统的预编译包,就需要到官网,下载,ROOT,的源代码,按照安装指南用,gmake,编译安装,。,Window,用户在官网下载相应的,.msi,文件直接安装即可。,Ubuntu8.10,用户可以到下面网页下载,5.22.00,版本的二进制代码,根据,Readme.txt,说明安装使用。,谢谢观赏,2019-6-29,6安装ROOT(2)如果是其它发行版的Linux,首先查看是,7,安装,ROOT(3),实际上,,Linux,下安装程序的基本套路很简单:,1.,如果需要用源码编译,a),下载源码压缩包,b),解压缩,c),编译,d),设置环境变量,(,如果需要,),2.,如果已有预编译的包,a),下载,b),解压缩,c),设置环境变量,(,如果需要,),3.yum/apt-get,直接用网络源安装,(,预编译的包,),4.,谢谢观赏,2019-6-29,7安装ROOT(3)实际上,Linux下安装程序的基本套路很,8,登录,ROOT,环境,运行,root,退出,root0,.q,键入,help,指令,如,root0,?,root1,.ls,root2,.!ls,ROOT,环境其它常用指令:,.L macro.C Load,文件,macro.C,.x macro.C,执行文件,macro.C,.ls,显示,ROOT,当前环境的所有信息,.!ls,显示,Linux,系统当前目录的所有信息,注:,ROOT,环境中,,ROOT,指令都以“,.,”,开头,系统指令都以“,.!,”,开头,谢谢观赏,2019-6-29,8登录ROOT环境运行 rootROOT环境其它常用指令:,9,ROOT,体验中心,(1),在,$ROOTSYS/tutorials,目录下,有五花八门的例子。,以后会经常与这个目录打交道。先尝试一下吧。,尝试方法:,cd/projects/$USER,cp-r$ROOTSYS/tutorials.(,注意不要把这个,.,漏掉了,),cd tutorials,然后找个感兴趣的目录,/,文件,,执行,ROOT,脚本,比如,cd roofit,root-l RoofitDemo.C,小技巧提示:,根据关键字,xxxx,从,tuotorials,的例子中寻找线索,grep-sirn xxxx$ROOTSYS/tutorials,比如找随机数用法:,grep-sirn random$ROOTSYS/tutorials,Roofit,示例,谢谢观赏,2019-6-29,9ROOT体验中心(1)在$ROOTSYS/tutorial,10,ROOT,体验中心,(2),还可以在,ROOT,网站上看到一些,ROOT,图片:,当然,,ROOT,的功能不只是做图,它不是一个作图工具。,跟数据分析有关的东西,基本都是,ROOT,的擅长;,跟物理有关的很多东西,,ROOT,基本都可以做得很好:,事例产生、探测器模拟、事例重建、数据采集、,数据分析,谢谢观赏,2019-6-29,10ROOT体验中心(2)还可以在ROOT网站上看到一些RO,11,ROOT,体验中心,(3-1),日本超级神冈中微子实验事例显示(,by zhanghb,),超大的水池,内外装满了光电倍增管,,1,万多个,谢谢观赏,2019-6-29,11ROOT体验中心(3-1)日本超级神冈中微子实验事例显示,12,ROOT,体验中心,(3-2),仅显示被击中的光电倍增管,谢谢观赏,2019-6-29,12ROOT体验中心(3-2)仅显示被击中的光电倍增管谢谢观,13,ROOT,体验中心,(3-3),平面展开显示,谢谢观赏,2019-6-29,13ROOT体验中心(3-3)平面展开显示谢谢观赏2019-,14,ROOT,体验中心,(3-4),平面展开,鼠标缩放,显示鼠标位置光电倍增管信息,谢谢观赏,2019-6-29,14ROOT体验中心(3-4)平面展开,鼠标缩放,显示鼠标位,15,ROOT,语法,(1),基本信息,ROOT,使用,C+,语法,一段,C+,程序可以直接在,ROOT,环境运行,数据类型重定义,int,Int_t,float,Float_t,double,Double_t,.,ROOT,的类都以,T,开头,如,TFile,TH1F,TTree,.,详细规定参阅,ROOT,手册,(5.21,版,),第,18-20,页,关于,Convention,和,Global Variables,部分。,可以直接在,ROOT,环境中运行,macro,文件,(,自动调用,cint,编译器,),,也可以在,makefile,中设置好相关参数用,g+,编译得到可执行文件运行。,谢谢观赏,2019-6-29,15ROOT语法(1)基本信息ROOT使用C+语法谢谢观,16,ROOT,语法,(2),直方图类,ROOT,中有众多已经定义好的类可供使用,比如,直方图,家族,谢谢观赏,2019-6-29,16ROOT语法(2)直方图类ROOT中有众多已经定义好的,17,ROOT,语法,(2),其它类,其它常用类,数学函数:,TF1,TF2,TF3.,图 形:,TGraph,TGraphErrors,TGraph2D,.,文 件:,TFile,画 布:,TCanvas,TPad,.,随 机 数:,TRandom,TRandom1,TRandom2,TRandom3,周期,10,9,10,171,10,26,10,6000,速度,(ns/call)34 242 37 45,比如跟数据结构和分析有关的:,TTree,TChain,.,参见,(,谨代表*邀请各位光临敝舍。注:*,=yangzw),还有很多,全局函数,,多数以,g,开头,如:,gRandom,gROOT,gStyle,gPad,gEnv,gFile.,速度与,CPU,和编译器有关,谢谢观赏,2019-6-29,17ROOT语法(2)其它类其它常用类速度与CPU和编译器,18,ROOT,语法,(3),随机数,gRandom,是指向当前随机数产生子的指针,该产生子默认为,TRandom3,对象。,(,为什么看,TRandom,?因为,TRandom1/2/3,都继承自,TRandom),gRandom-Binomial(ntot,p):,二项分布,gRandom-BreiWigner(mean,gamma)Breit-Wigner,分布,gRandom-Exp(tau),指数分布,gRandom-Gaus(mean,sigma),高斯分布,gRandom-Integer(imax)(0,imax-1),随机整数,gRandom-Landau(mean,sigma)Landau,分布,gRandom-Poisson(mean),泊松分布,(,返回,int),gRandom-PoissonD(mean),泊松分布,(,返回,double),gRandom-Rndm()(0,1,均匀分布,gRandom-Uniform(x1,x2)(x1,x2,均匀分布,.,思考:什么情况下需要,PoissonD(mean)?,谢谢观赏,2019-6-29,18ROOT语法(3)随机数gRandom是指向当前随机数,19,ROOT,脚本文件示例,(1),:,Macro,文件,/home/yangzw/examples/Lec3/ex31.C,用花括号括起来,后缀名一般用,”.C”,cout Hello ROOT endl;,int Num=5;,for(int i=0;iNum;i+),cout i=i Fit(gaus);/,对直方图进行高斯拟合,TF1*f1=new TF1(f1,gaus,-5,5);,谢谢观赏,2019-6-29,22数学函数的定义方式(2)ROOT已经预定义了几种常用的含,23,数学函数的定义方式,(3),ROOT,中自定义含未知参数的数学函数,利用,c+,数学表达式,TF1*f1=new TF1(f1,0,*sin(,1,*x)/x,0,10);,利用,c+,数学表达式以及,ROOT,预定义函数,TF1*f1=new TF1