如何在不打开ROOT中的TBrowser的情况下在终端中绘制TH1F?

问题描述

我有一个根目录,当我列出文件时,我可以看到有一个文件

KEY: TH1F  h_met;1

我正在尝试通过终端命令绘制直方图,并且不想打开Tbrowser,因为它对我来说超级慢。

是否有一个终端命令可以绘制?

我尝试过

TCanvas *c1 = new TCanvas("c1","c1"); c1->Draw("h_met")

但这没用。

解决方法

您应该首先获取直方图,然后再绘制。假设您的文件以f的形式打开:

TH1F *h1 = (TH1F*)f.Get("h_met");
h1->Draw();
,

假设您使用的是ROOT 6,并假设您的文件名为f.root,请这样做

root -l f.root -e "h_met->Draw()"
,

是的,有时随着图形的变化可能会变慢,

我建议使用该选项

-b以批处理模式运行而没有图形 所以,你可以做

root -l -q
root [1] TFile f("yourfile.root");
root [2] TH1F *h1 = (TH1F*)f.Get("h_met");
root [3] h1->Draw()
Info in <TCanvas::MakeDefCanvas>:  created default TCanvas with name c1
root [4] c1->SaveAs("save_it_for_open_later.png")

从Draw中可以看到,默认情况下将创建TCanvas c1,而使用SaveAs可以将histogram h1保存为png或其他格式,以便以后使用其他应用程序打开。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...