ROOT(a Data analysis Framework)-Note4: iSTEP day1-TH1TF1
Note4: TF1 & TH1
最近参加了一个叫做iSTEP的暑期学校,这里教授一些基本的ROOT使用方法。曾经用root的过程忘的差不多了,也没有记录。现在正好记录一下。
TF1类
TF1类是一个数学函数的类,基本的用法就是画一些函数的图像。
root [0] TF1* f = new TF1("f","sin(x)",-10,10)
(TF1 *) 0x55ad7a22f1f0
像这样就建立了一个TF1的对象,其中“f”
是它的名称[1],“sin(x)”是它的内容,后面两项是自变量的取值范围。第二行显示,已经成功地创建了一个TF1类的指针。之后可以使用这个指针完成很多操作。最简单的功能就是画出图像:
root[1] f->Draw()
C++的内容:f是一个类的指针,这个类的成员方法,如Draw(),要用->
调用。
还可以为一个函数设置参数:
root [2] TF1* f1 = new TF1("f1","[0]+sin(x)",-10,10)
(TF1 *) 0x55ad7a976f80
root [3] f1->SetParameters(10,1)
root [6] f1->Draw()
其中[0]
就代表一个参数,类似于函数f1=a+sin(x)f1 = a+sin(x)f1=a+sin(x),只不过a写成了[0]的形式。这样,一个带参数的函数就完成了,在Draw之前,需要设定a的值,就是root[3]的那行命令,语法是SetParameters(参数1的值, 参数2的值, 参数3的值, ... , 参数的总数)
,再Draw之后可以看到参数已经生效。一个具有参数的函数可以用来做自定义拟合,这个我只是看到,还没有实践。
TH1类
TH1类是一个直方图的类,可以将很多数据填充到其中,然后形成一个直方图,根据填充数据的精度分为TH1F、TH1D等。
root [1] TH1D* h = new TH1D("h","h",100,-10,10)
(TH1D *) 0x5633693cfc50
构造函数TF1()
中的参数分别是,内存名、名字、bin的数量、bin的起始和结束位置。
root [2] h->FillRandom("gaus",1000)
root [3] h->Draw()
FillRandom()
方法向h
中添加了1000个高斯分布的随机数。画出图来就是这样,如果增加填充数据量,可以降低直方图的误差,误差可以体现在error bar上:
TF1 f = TF1("f","1/(x+12)",-10,10);
TH1D* h = new TH1D("h","h",100,-10,10);
h->FillRandom("gaus",1000);
TCanvas* c = new TCanvas();
c->Divide(1,3);
c->cd(1);
h->DrawClone("e1");
c->cd(2);
h->FillRandom("gaus",9000);
h->DrawClone("e1");
c->cd(3);
for(int i=0; i<100000;i++){ h->Fill(f.GetRandom()); }
h->DrawClone("e1");
c->Draw()
这几行代码里面加入了其他的方法,并且可以看到TF1类的另一个用法,即获取特定分布的随机数,当然,这要求函数在特定区间中是可积的,否则不能作为一个概率分布使用。
PS:关于TF1和TH1参数有个小问题
官方的解释是:TF1中第一个参数是字符串,代表Name,TH1中前两个参数是字符串,分别代表Name和Title。但我的理解上,这两个Name是有些细微区别的,可以在定义一个TF1时使用其他TF1对象的Name,重名并不会更改对象,但会覆盖这个Name对应的函数:
TF1 * f1 = new TF1("f1name", "sin(x)", -10,10);
TF1 * f2 = new TF1("f1name", "x*f1name",-10,10);
TF1 * f3 = new TF1("f3name", "f1name",-10,10);
TCanvas * c = new TCanvas();
c->Divide(3,1);
c->cd(1);
f1->Draw();
c->cd(2);
f2->Draw();
c->cd(3);
f3->Draw();
c->Draw();
而对于TH1来讲,是不能重名的,一旦重名,就会有内存溢出的风险,而ROOT进行解释运行时,只会报出Warning讲存在潜在的内存泄漏:
Warning in TROOT::Append: Replacing existing TH1: h1name (Potential memory leak).
通常,Name总是和对象名相同,以免出现问题。
ROOT(a Data analysis Framework)-Note4: iSTEP day1-TH1TF1相关推荐
- ROOT(a Data analysis Framework)-Note6: iSTEP day3-Random
Note5: Random3 其实每天进展都还是听慢的,今天也只考虑了一个小问题,就是生成随机数. Monte-Carlo方法产生特定分布的随机数 给定一个分布,或许不一定归一化: P(x=x′)=f ...
- ROOT(a Data analysis Framework)-Note5: iSTEP day2-TH1::Fit()
Note5 :数据拟合 今天还是关于TH1和TF1的内容,使用Fit方法,使用不同的函数对数据进行拟合.下面以问题的形式做个小的总结记录. 摘要 TFile基本操作 打开一个.root文件: TFil ...
- Hi-C data analysis tools and papers
Hi-C data analysis tools and papers 全文链接如下: https://github.com/mdozmorov/HiC_tools Tools are sorted ...
- python进行探索性数据分析EDA(Exploratory Data Analysis)分析
python进行探索性数据分析EDA(Exploratory Data Analysis)分析 show holy respect to python community, for there ded ...
- Android11 无Root 访问data目录实现、Android11访问data目录、Android11解除data目录限制、Android11 data空白解决
Android11 无Root 访问data目录 实现 正文开始 关于Android11权限变化 作为普通安卓用户该如何方便快速地访问Android/data目录 开发者该如何实现无ROOT访问Dat ...
- R语言统计入门课程推荐——生物科学中的数据分析Data Analysis for the Life Sciences
Data Analysis for the Life Sciences是哈佛大学PH525x系列课程--生物医学中的数据分析(PH525x series - Biomedical Data Scien ...
- R语言explore包进行探索性数据分析实战(EDA、exploratory data analysis):基于iris数据集
R语言explore包进行探索性数据分析实战(EDA.exploratory data analysis):基于iris数据集 目录
- R探索新数据分析(Exploratory Data Analysis,EDA)
R探索新数据分析(Exploratory Data Analysis,EDA) 目录 R探索新数据分析(Exploratory Data Analysis,EDA) str方法进行数据概览及类型查看
- ADO.NET Data Services Framework 基础概述
随着.NET Framework 4.0 及 Visual Studio 2010 的发布, ADO.NET Data Services Framework 2.0 的版本也将同时发布,新的.Net ...
最新文章
- java字符串分割性能_String字符串性能优化的几种方案
- 在执行方法和Web资源中获取传递过来参数的值
- matlab中均线交易策略,【每日一策】Matlab量化交易策略之 均线选股策略
- 谈谈苹果应用内支付(IAP)的坑
- 判断字符串中是否包含中文
- matlab 信号处理 教程,MATLAB信号处理仿真 实验_教程-学习文件.pdf
- python怎么创建变量_Python之变量的创建过程
- 一个地方越有钱,人们就越不想结婚?
- android sd卡挂载广播,Android--检测内置/外置SD卡存储卡,枚举所有挂载点(通过反射实现),监听SD卡广播...
- nginx 配置多个域名 指向不同服务_Nginx的几个常用配置和技巧
- msyql 1062
- Hadoop 之 Distcp官网介绍和注意事项
- 通过表达式树构建URL时正确识别ActionNameAttribute
- 在Ubuntu 20.04(含Xubuntu、Linux Mint Cinnamon等衍生版)上安装Wine QQ,获得更佳的使用体验
- ABB机器人示教器修改IP
- 马化腾对短视频志在必得?腾讯又双叒叕发布了一款短视频App
- 数据可视化之大数据平台可视化
- 如何用漫画说明 XSS 和 CSRF 的区别?
- 基于Nano Pi NEO4开发板的AS项目开发
- 网易我的世界 java错误_我的世界:网易有点懒,明明是同一个版本,待遇却大不一样!...