root学习笔记 新

更新时间:2023-11-30 19:46:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

设置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,\ mg->Add(gr2,\ mg->Draw(\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

Void 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 = \)

一个TLegend是以几个TLegendEntry为基础的;x1,y1,x2,y2是当前pad的TLegend的坐标;\是显示在TLegend顶部的标题。 (2)设置TLegend里面的相关字型,字体等

TLegend指针->SetTextFont()//设置TLegend里面的文本字型

TLegend指针->SetTextSize()//设置TLegend里面的文本字体的大小 (4) 向TLegend里面添加条目

TLegendEntry * AddEntry(const TObject* obj, const char* label = \Option_t* option = \ //将一个新的条目添加到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 \(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文件.

本文来源:https://www.bwwdw.com/article/r2dt.html

Top