ROOT (a Data analysis Framework) - Note1:先定一个小目标

ROOT-Note

ROOT是一个基于C++的软件包,它被广泛地应用于高能物理实验的数据处理中。为了应付毕设, 近期开始学习ROOT的基本操作方法。这里就先记录下如何开始使用ROOT,以及随便画个图出来,以表尊敬。

打开ROOT

Root软件是基于C++的,但它嵌入了cling,因此可以通过命令行交互,还可以运行macro文件(实际上是一个C++脚本),可以解释运行也可以编译运行,这就很方便。

在设置好环境变量的前提下,打开ROOT交互界面可以输入命令:

root

这样它总会弹出一个没什么用的Logo出来,像Matlab和Mathematica一样,但又没有后两者的编辑器界面。所以不如就不让他弹出,这样在使用ssh远端操作的时候也不会报错。

root -b #不弹出初始logo

这样开启的命令行界面开头有一个帮助框:

   ------------------------------------------------------------
  | Welcome to ROOT 6.16/00                  https://root.cern |
  |                               (c) 1995-2018, The ROOT Team |
  | Built for linuxx8664gcc on Jan 31 2019, 11:52:00           |
  | From tag , 23 January 2019                                 |
  | Try '.help', '.demo', '.license', '.credits', '.quit'/'.q' |
   ------------------------------------------------------------

root [0] 

或者加后缀-l不要这个帮助框:

user@user-PC:~$ root -l
root [0] 

2020.1.16
在MBP上构建的root里,好像-l-b不仅仅是帮助框的差别。在-b下,root不会弹出画布。

然后就可以开始操作了。

如果你有一个现成的~~(导师给的)~~ macro脚本,并且想直接运行它,那么就可以输入命令:

root -b MacroName.c

就像运行python一样。如果想在命令行中调用macro中的类或者在命令行下运行这个脚本,那分别可以这样操作:

root [0] .L MacroName.c // 导入一个文件
root [1] MacroName() // 运行其中的main函数,它总是与文件同名
root [0] .x MacroName.c // 直接运行一个脚本

在ROOT中使用bash

很简单,就是在命令前加.!

root [0] .! ls
 baidunetdisk	        Desktop     Download   Music		 NutstoreFiles	 Videos
 baidunetdiskdownload   Documents   logs      'Nutstore Files'	 Pictures

简单画个图并打印出来

TF1是一个盛装数学函数的类,将它事例化可以实现基本的画图工作。

user@user-PC:~$ root -b
   ------------------------------------------------------------
  | Welcome to ROOT 6.16/00                  https://root.cern |
  |                               (c) 1995-2018, The ROOT Team |
  | Built for linuxx8664gcc on Jan 31 2019, 11:52:00           |
  | From tag , 23 January 2019                                 |
  | Try '.help', '.demo', '.license', '.credits', '.quit'/'.q' |
   ------------------------------------------------------------

root [0] TF1 h("h","sin(x)",0.,10.)
(TF1 &) Name: h Title: sin(x)
root [1] h.Draw()
Info in <TCanvas::MakeDefCanvas>:  created default TCanvas with name c1
root [2] c1.Print("/home/user/c1.pdf")
ROOT_prompt_2:1:3: error: member reference type 'TCanvas *' is a
      pointer; did you mean to use '->'?
c1.Print("/home/user/c1.pdf")
~~^
  ->
  
  // 可以看到,实际上它将h.Draw()对象保存为(TCanvas)类指针,调用它的成员方法就要用”->”

root [3] c1->Print("/home/user/c1.pdf")
Info in <TCanvas::Print>: pdf file /home/user/c1.pdf has been created

这样,在相应的目录下就有一个PDF了。

发布了29 篇原创文章 · 获赞 3 · 访问量 6701

猜你喜欢

转载自blog.csdn.net/weixin_43316938/article/details/88758189