root学习笔记 新
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设置Axis上面的刻度线
命令:Tpad::SetTicks()
Tpad::SetTicks(tx,ty):tx和ty的相关参数查询。
重画Axis:
gPad->RedrawAxis()
设置坐标轴的Titles
1:先得到直方图的坐标轴;2:设置title
Histogram pointer->GetXaxis()->SetTitle(“X/Y/Z axis title”)
例子:h->GetXaxis()->SetTitle(“E_{T}”)
创建直方图的同时设置直方图以及坐标轴的titles
TH1F* h=new TH1F(“h”, ”Histogram title ;X Axis ;Y Axis ; Z Axis”,100,0,1)
或者:h->SetTitle(“Histogram title ; An other X title Axis”)
画直方图的副本
例:TH1F* hnew=(TH1F*)h->Clone() //画直方图的copy,
hnew->SetName(“hnew”)//重命名Clone直方图
向一个file保存直方图/从一个File读取直方图信息
Save:1:创建ROOT file(TFile f(“root file’s name”,”new”)
2: 创建直方图
3:填充直方图
4:将直方图写进root file(直方图指针->Write()).
Read:1:打开直方图(TFile f(“root file’s name”))
2: 获得直方图(TH1F *h=(TH1F*)f.Get(“直方图名”))
设置字母bin label
Taxis:: SetBinLabel( bin, label)
有关用随机数填充直方图方面的命令
gRandom->Rannor(px,py) gRandom是随机数generator,此命令产生两组满足高斯分布(mean=0,sigma=1)的数
关于剖面直方图的一些命令
剖面直方图的构造函数TProfile(const char*name,const char*title, Int_t nbinsx,Double_t xlow, Double_t xup, Double_t ylow, Double_t yup,Option_t *option).
画剖面直方图不显示error bar;在TProfile::Draw()里面用”HIST”选项。
根据一个剖面直方图创建一个常规直方图:TProfile::ProjectionX。
从一个TTree产生一个剖面直方图:在TTree::Draw method里面用’prof’和’profs’选项,(’prof’产生带有error on the mean的TProfile;’profs’产生带有error on the spread的TProfile)。
对直方图的坐标进行设置:直方图指针->GetXaxis->SetAxisColor()/SetTitle();
Draw命令的一些options
Draw(”iso”)->画的是高洛德着色的等值曲面图。
TPie类:
创建一个饼状图(Pie Chart)来表示一个一维的数据集。
关于画TPie的一些options:
”R”在饼状图的分区/分块的中间画出标签;
“3D”用三维效果来画饼状图,
“NOL”不画出饼状图中的轮廓线;
“>”按片增加的顺序进行排序
“<”按片减小的顺序进行排序(以逆时针方向来说)
SetLabelFormat():自定义标签格式,格式字符串中必须包含一个修饰符:
-%txt 打印饼状图中条块的文本标签;
-%val 打印片块的数值
-%frac 打印片块的相对分数
-%perc 打印片块的百分数
Graphs:
Graph是两个数组X和Y的图形对象。
Graph class 类包含TGraph,TGraphErrors,TGraphAsymmErrors ,and TMultiGraph. TGraph 类对于等间距和非等间距的点都使用,创建graphs的步骤可以分为两步:
1:定义坐标数组
2:创建graph TGraph* const char=new TGraph(n,x,y); n表示点的数目。
Graph 的Draw Options 总结:
“L”在两个点之间会画一个简单地多义线;
“F”填充以点为边界的条件;
“A”画出坐标轴,“C”画出光滑的曲线;
“*”每个点上画一个“*”
“B”在每一点画条形图;
一般的option搭配为“AB”,“AC”,“AC*”。
注意:在填充画图之前,要先设置填充颜色,因为默认的填充graph的颜色是白色,在白色的画布上面不易看到;另外还需要给定坐标轴,即要有“A”option,否则填充的多边形无法正确显示。
对TGraph类的坐标进行设置:TGraph类指针->GetXaxis->SetAxisColor()/SetTitle()
两个graphs的叠加:
在叠加两个graphs时,坐标轴只需要画一次,在第二个graph的draw options里去掉“A”即可实现。
Graph with Error Bars
TGraph with error bars 的类是TGraphErrors。
画布指针-> SetFillColor( ) 填充画布颜色
画布指针-> SetGrid( ) 对坐标区间画梯度线(画格子)
带有不对称误差线的graphs
带有不对称误差线的graph的类是TGraphAsymmErrors;
带有不对称的弯曲误差线的graphs
带有不对称的弯曲误差线的graph的类是TGraphBentErrors。
TGraphPolar类
TGraphPolar类用来创建一个polar graph (带有error bars);极坐标轴用TGraphPolargram 类来画。
TMultiGraph
TMultiGraph类是graph对象的集合,它允许操作一组图形作为一个整体(注意:在绘制的时候,X和Y轴的排列会自动计算以使所有的图像能够显示出来)。
TMultiGraph将对象存放在list中,TMultiGraph::Add 用来将new的graph添加到list中。
Draw的options同TGraph的Draw options 相同。
例TGraph *gr1 = new TGraph(...
TGraphErrors *gr2 = new TGraphErrors(...
TMultiGraph *mg = new TMultiGraph();
mg->Add(gr1,"lp");
mg->Add(gr2,"cp");
mg->Draw("a");
TGraph2D
新建TGraph2D对象:
(1)TGraph2D *g = new TGraph2D(n,x,y,z);(n为X,Y,Z三个数组的维度)(2)TGraph2D *g = new TGraph2D(n);
(3)TGraph2D *g = new TGraph2D();
填充graph2D里面的数据点/填充数组的method:SetPoint(i,x,y,z)
TRandom
TRandom是一个随机数的产生类;Rndm()method是在0~1之间产生分布一致的浮点。
设置graph的轴标题
给一个graph设置轴标题,首先要把graph画出来,graph画出来之后才会有一个轴对象。
设置轴标题的步骤:(1)得到轴的地址;(2)调用TAxis::SetTitle() method(如果想让标题居中,调用TAxis::CenterTitle())
放大Graph
首先要先创建一个直方图与所需的轴范围;然后画一个空的直方图,用空的直方图的轴来画graph。
Fitting Histogram 章节
对于一个直方图的拟合有两种方法:(1)通过直方图的下拉菜单的FitPanel;(使用Fit Panel 之前,直方图要先在Pad上画出来)。
(2)运用TH1::Fit method(多用于脚本和程序中).
TH1::Fit
V oid Fit(拟合函数的名字,拟合选项(fitting option),图形选项(同TH1::Draw),Axis_t xxmin, Axis_t xxmax (拟合范围))。
拟合函数可以是系统定义的函数,也可以是用户自定义的函数;
系统预定义的函数有:“gaus”,“expo”,“polN”,“landau”
用户自定义的函数有三种定义方法:
(1)使用C++表达式和一组TFormula中定义的算符和函数(用公式定义TF1)TF1 *pointer=new TF1(“the name of TF1”,”TF1的表达式”,xmin,xmax)
(2)使用C++表达式和参数
a:TF1 *pointer=new TF1(“the name of TF1”,”TF1含有参数的表达式”,xmin,xmax)
例:TF1 *f1=new TF1(“f1”,”[0]*x*sin([1]*x)”,-3,3)
b: f1->SetParameter(0,10)
c: f1->Draw()
(3)用户自己定义函数,并自己为构造函数附名。
Double_t fitf(Double_t *x,Double_t *par)
X:指向数组维度的指针;par指向参数数组的指针。
确定参数值并设置参数的范围
设置一个参数的范围,使用TF1::SetParLimits;
例子:func->SetParLimits(0,-1,1) //设置第0个参数的取值范围为-1到1
如果范围的上下界限一样,那么参数的数值就被确定
例子:func->SetParLimits(4,10,10) //设置第四个参数的大小为10
至此,确定参数值可以有两种表达:
(1)func->SetParameter(4,10)
(2)func->SetParLimits(4,10,10)
注意:将一个参数值设置为0,必须调用TF1::FixParameter;即func->FixParameter(4,0) , 或者func->SetParameter(4,0)
怎样在同一个直方图上面拟合几个不同的函数:
默认情况下,针对一个直方图的拟合命令,会把之前的拟合函数删除,只保留最近的拟合函数;因此要想在同一个直方图上面拟合几个不同的函数就要在Fit function的第二个参数具体“+”option。
TLegend
(1)新建一个TLegend的方法:TLegend *指针=new TLegend(x1,y1,x2,y2,const char* header = "", Option_t* option = "brNDC")
一个TLegend是以几个TLegendEntry为基础的;x1,y1,x2,y2是当前pad的TLegend的坐标;"header"是显示在TLegend顶部的标题。
(2)设置TLegend里面的相关字型,字体等
TLegend指针->SetTextFont()//设置TLegend里面的文本字型
TLegend指针->SetTextSize()//设置TLegend里面的文本字体的大小
(4)向TLegend里面添加条目
TLegendEntry * AddEntry(const TObject* obj, const char* label = "", Option_t* option = "lpf") //将一个新的条目添加到TLegend里面;“obj”是显示的对象指针,label是TLegend里面和“obj”关联的文本,如果“label”是null或空的,对象标题将会被使用。
Options are:
L: draw line associated with TAttLine,如果“obj”继承与TAttLine
P: draw polymarker associated with TAttMarker if obj inherits from TAttMarker
F: draw a box with fill associated wit TAttFill if obj inherits TAttFill
E: draw vertical error bar if option "L" is also specified
(5)画TLegend
TLegend指针->Draw()
如何使拟合参数在数据框中显现出来
TStyle::SetOptFit(mode) mode=pcev
P=1:print 拟合几率
c=1 print Chi-square/number of degrees of freedom
e=1 Print 误差(如果e=1,v必须为1)
v=1 print 参数的名字和值
例子:print 拟合几率,参数名字和参数值,以及参数误差
gStyle->SetOptFit(1011)
针对.root文件的操作
TFile::Map( )在Scan文件的时候,按顺序读取文件并打印每个记录的信息。
TFile::Get( )在文件里面找到一个特定的对象
显示.root文件里的对象列表的语法
KEY:<类名> <对象名>;<循环次数><标题>
当前目录的相关操作(gDirectory代表的就是当前目录):
当创建了一个TFile对象,它就会成为当前的目录,因此最后打开的file通常是当前的目录,检查当前目录的命令:gDirectory->pwd( )(如果命令返回的是Rint:/;Rint代表当前目录是ROOT session)
当打开多个TFile对象的时候,可以使用gDirectory::cd命令改变当前目录到前面的TFile文件.。