在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → 高能物理分析软件ROOT的入门使用方法

高能物理分析软件ROOT的入门使用方法

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:1.74M
  • 下载次数:5
  • 浏览次数:465
  • 发布时间:2020-06-28
  • 实例类别:一般编程问题
  • 发 布 人:robot666
  • 文件格式:.pdf
  • 所需积分:2
 

实例介绍

【实例简介】
root是cern开发的数据分析软件,根据cern官网的A ROOT Guide For Beginners英文版翻译的中文文档,适合初学者了解root软件的使用
723存储任意类型的 N-tuples… 724处理跨文件的 n-tuple 7.2.5对进阶用户:使用送择器即本处理树… 54 7.2.6对干进阶价用户:使用 PROOF lite进行多核处理 72.7关于 N-tuples的优化 8 ROOT in python :::::::::::t ·::::··: 59 8. 1 PYROOT 59 8.1. 1 More Python-less C++ 8.2自定义代码:从C+到 Python 9结束语… 64 References 64 摘要 ROOT是一个用于数据分析和I/O的软件框架:一个强大的工只,可以应对最先进的科学 数据分析的典型任务。它的突出特点包括高级图形用户界面,非常适合交互式分析,C++ 编程语言的解释器,快速高效的原型设计和C艹+对象的持久性杋制,还用于写入大型强了 对撞机实验记录的每年PB级数据(1PB=1024TB译者注)。本入门指南说明了ROOT的主 要特征,这些特征与数据分析的典型问题相关:输入和绘制测量数据和分析功能的拟合。 原创作者-D. Piparo-G. Quast-M,cisc 译者注:本文均是 Google翻译结果,仅对代码和板式作调整,欢迎修改分享 软件背景与简介 欢迎来到数据分析ROOT! 测量与理论模型的比较是实验物理学中的标准仟务之一。在最简单的情况下,“模型”只 是提供测量数据预测的函数。通常,模垩取决于参数。这种模型可以简单地表示“电流I与 电压U成比例”,并且实验者的任务包括从一组测量中确定电阻R 作为第一步,需要数据的可视化。接下来,通常必须应用一些操作,例如,校正或参数 转换。通常,这些操作是复杂的,并且应该提供强大的数学函数和程序库-例如,考虑应 用于输入光谱的积分或峰值搜索或傅立叶变换以获得模型描述的实际测量偵。 实验物理学的一个特点是影响每个测量的不可避免的不确定性,可视化工具必须包括这 些。在随后的分析中,必须正确处理错误的统计性质 作为最后一步,将测量值与模型进行比较,并且需要在此过程中确定自由模型参数。有 关适合数据点的函数(模型)的示例,请参见图1.1。有儿种标准方法可供使用,数据分析 工具应能方便地访问其中一种以上。还必须提供量化测量和模型之间一致性水平的方法。 通常,要分析的数据量很大-考虑借助计算机累积的细粒度测量。因此,可用工具必须包 含易于使用且有效的方法来存储和处理数据 在量子力学中,模型通常仅根据许多参数预测测量的概率密度函数(“pdf),并且实验 分析的目的是从观察到的频率分布中提取参数,其中观察测量。这种测量需要生成和可视化 频率分布的装置,所谓的直方图和严格的统计处理,以从纯粹的统计分布中提取模型参数。 预期数据的模拟是数据分析的另一个重要方面。通过重复生成“伪数据”,其以与用于真实数 据的预期相同的方式进行分析,可以验证或比较分析过程。在许多情况卜,测量误差的分布 并不是精确已知的,并且模拟提供了测试不同假设的景响的可能性。 满足上述所有要求的强大软件框架是ROOT,这是个由日内瓦欧洲核了研究中心欧洲 核研究组织协调的开源项目 ROOT非常灵活,既可以在自己的应用程序中使用编程接口,也可以提供用于交互式数 据分析的图腦用户界面。木文档的目的是作为初学者指南,并根据学生实验室中解决的典型 问题为您自己的用例提供可扩展的示例。本指南有望为您未来科学工作中更复杂的应用奠定 基础,建立在现代,最先进的数据分析上具之上 本指南以教程的形式向您介绍ROOT包。根据“边做边学”的原则,这个目标将通过具 体的例子来完成。也正因为这个原因,本指南无法涵盖ROOT包的所有复杂性。然而,一日 您对以卜章节中介绍的概念有信心,您将能够欣赏ROOT用户指南( The Root Users guide 2015)并浏览类参考(根参考指南2013)以査找所有详细信息您可能会感兴。您甚至可以 查看代码本身,因为ROOT是一个免费的开源广品。与本教程并行使用这些文档! ROOT数据分析框架本身是编写的,并且在很大程度上依赖于C++编程语言:需要 些关于C++的知识。如果您不了解这种语言的含义,Js可以利用有关C++的大量文献。 ROOT可用于许多平台( Linux, Mac osx, Windows….),但在本指南中我们将隐含地假设 您使用的是 Linux。你需要做的第一件事就是安装ROOT,不是吗?获取最新的ROOT版本 非常简单。只需在此网页htp:/ root, cern.ch/ downloading-root上寻找“专业版”。您将找到针对 不同体系结构的预编译版木,或者您自凵编译的ROOT源代码。只需拿起您需要的味道并 按照安装说明操作即可。 让我们深入了解ROOT! ROOT基础 既然你凵经安装了ROOT,那么你止在运行的这个交互式 shell是什么?就像这样: ROOT带来了双重功能。它有一个宏的解释器(Cing( What is Cling”2015)),您可以从命 令行运行或像应用程序一样运行。但它也是一个可以评估任意语句和表达式的交互式 shell 这对于调试,快速黑客攻击和测试非常有用。 我们先来看一些非常简单的例子 2.1ROOT作为计算器 您甚至可以使用ROOT交互式she代替计算器!使用该命令启动ROOT交互式shel root 在你的Liux机器上。提示应该很快出现: root「8 让我们来看看这里显示的步骤 root [0] 1+1 (int)2 root[1]2*(4+2)/12 (doub1e)1.0000 root [2] sqrt(3. ( double)1.732051 root[3]1>2 (bool) false root [4] TMath: Pi() ( double)3.141593 root [5] TMath: Erf( 2) ( double).222703 不错。您可以看到,ROOT不仅可以输入C++语句,还可以输入存在于 MAth命名 空间中的高级数学函数。 现在让我们做一些更详尽的事情。一个众所周知的几何系列的数字小例 root [6 double X=5 (double)0.500000 root [7] int N=30 (int)30 root [8] double geom series=0 (doub1e)8.099 root [9] for (int i=0; i<N; ++i)geom series+=TMath:: Power(x, 1) root [10] cout < TMath: Abs(geom series -(1-TMath: Power(x,N-1)/(1 x))<<end1; 1.86265e-09 在这里,我们向前迈进了一步。我们甚至声明了变量并使用了一个控制结构。请注意, Cling和标准C++语言之间存在一些细微差别。在交互模式下,您不需要在行尾的“;”-尝 试区别,例如在 line root6使用命令 22在ROOT命令行学习C++ 在ROOT提示符后面有一个基于真实编译器工具包的解释器:LLVM。因此,可以使 用C++和标准库的许多功能。例如,在下面的代码片段中,我们定义了一个1 ambda数, 一个向量,我们以不同的方式对它进行排序: root [o] using doubles std: vector<double>; root [1 auto pVec [I(const doubles& v)ifor (auto&& x:v)cout <<x<< nd1;}; root [2] doubles v[0,3,5,4,1,2] root [3 pVec(v)i 3 2 root [4] std: sort(v begin(),vend() root [5 pVec(v)i 012345 root [6 std: sort(v begin(),vendo,[(double a, double b]ireturn a>b;}); root [7 pvec(v); 5432 或者,如果您更喜欢随机数生成: root [o] std: default_ random engine generator; root [1] std: normal distribution<double>distribution (0.,1.; root [2] distribution (generator (std: normal_distribution<double>:: result type )-1. 219658e-01 root [3 distribution(generator (std:: normal distribution<double>:: result type)-1. 086818e+00 root [4] distribution( generator) (std: normal distribution<double>: result type )6.842899e-01 令人印象深刻的不是吗? 23ROOT画函数图像 使用ROOT强大的类之“,这里TF1将允许我们显示·个变量x的函数。请尝试以下 方法: root[11]TF1f1("f1","sin(x)/x",9.,1.); root [12] f1. Draw (; 们是TF1类的一个实例,参数在构造函数中使用;第一个类型字符串是要在内部ROOT 内存管理系统中输入的名称,第:个字符串类型参数定义函数,这里是sin(x)/x,而 double 类型的两个参数定义变量的范围Ⅹ。Draw()方法,这里没有任何参数,在一个窗口中显 示该函数,在您输入上面两行之后应该弹出该窗口。 此示例的稍微扩展版本是带有参数的函数的定义,在ROOT公式语法中称为[0],[等。 我们现在需要一种为这些参数赋值的方法;这是通过类TF1的 SetParameter (“ parameter number>, parameter value>)方法实现的。这是一个例子 root[13]TF1f2("f2","[o]*sin([1]*x)/x",0,,19.) root [14] f2 SetParameter(o, 1) root [15 f2 SetParameter (1,1); root [16] f2 Draw(; 当然,这个版本显示的结果与初始版本相同。尝试播放参数并再次绘制函数。TF1关 具有大量非常有用的方法,包括积分和区分。要充分利用此类和其他ROOT类,请访问 nternet上的文档http://root.cern.ch/drupal/content/reference-guide.Root中的公式使用类 FOrmula进行评佔,因此还要查看相关的类文档以获取示例,实现的函数和语法 您一定要将本指南下载到您自己的系统,以便随时随地使用 要在上面的示例中稍微扩展一下,请考虑一个您想要定义的更复杂的函数。您也可以使 用标准C或C++代码执行此操作。 考虑下面的示例,该示例计算并显示由落在多个狄缝上的光产生的干涉图案。请不要在 ROOT命令行输入以下示例,有·种更简单的方法:桷保磁盘上有文件 slits, c,并在 shell i中 键入 root slits.C这将启动root并使其读取“宏”sis,C,即文件中的所有行将一个接一个地 执行。 // ExampLe drawing the interference pattern of light /falling on a grid with n slits and ratio r of slit // width over distance between slits auto pi TMath: Pi(; function code in C double single(double *x, double *par)t return pow(sin(pi*par[0]*x[0])/(pi*par[0]*x[0]),2) double slite (double *x, double *par)f return pow(sin(pi par[1] xlo]/sin(pi x[0]),2); double slit(double *x, double *par)f return single(x, par)*slite(x, par); / This is the main program void slits()( float r, ns j // request user input cout <<slit width /g? scanf( %f, &r) cout << of slits?j scanf( %f",&ns); cout < interference pattern for"<<ns < slits, width/distance: <<r<<endl; // define function and set options TF1 *Fnslit =neW TF1( Fnslit",nslit,-5001,5.2) Fnslit->SetNpx(500); set parameters, as read in above Fnslit->SetParameter(o,r) Fnslit->SetParameter (l, ns); // draw the interference pattern for a grid with n sli Fnslit->Draw() Fnslit 35 3 2,5 1.5 05 2 2 4 参数为0.2和2的sitC输出图像 该示例首先要求用户输入,即狹缝宽度与狭缝距离的比率和狭缝的数量。输入此信息后, 您应该看到如图2.1所示的图形输出 这是一个比我们之前看到的更复杂的例子,所以花一些时间仔细分析它,你应该在继续 之前理解它。让我们详细介绍一下: 第7-18行定义了C一代码中的必要函数,分成三个独立的函数,如所考虑的问题所示 完仝干涉图案由函数的乘积给出,该函数取决于狭缝的宽度和距离的比率,并且第二个取决 于狄缝的数量。对我们来说更重要的是定义这些函数的接口,使它们可用于ROOT类TF1: 第一个参数是指向x的指针,第二个参数指向参数数组。 主程序从第21行开始,定义了ⅴoid类型的函数 slits()。在询问用户输入之后,使用开 头给出的C类型函数定义ROOI函数。我们现在可以使用TF1类的所有方法来控制我们函 数的行为-很好,不是吗? 如果您愿意,可以在TF1实例中轻松扩展示例以使用函数双单,或具有窄狄缝的网格, 区数nsit0来绘制单个狭缝的干涉图案。 在这里,我们使用了一个宏,某种轻量级稈序,与ROOT,Cing一起分发的解释器能 够执行。这是一个非常特殊的情况,因为C++本身不是一种解释语言!还有很多话要说: 章确实是专门用于宏的。 【实例截图】
【核心代码】

标签:

实例下载地址

高能物理分析软件ROOT的入门使用方法

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警