1

我正在使用 CERN 的 ROOT 框架(必需),我想从 TNtuple 中获取数据并绘制图表。我可以在创建 TNtuple 时绘制数据,也可以在将其写入 .root 文件后绘制数据。一些支持文档建议我创建一个 TTree,但这似乎有点矫枉过正/迂回,因为我不会将它用于其他任何事情(并且 TNtuple 满足我的所有其他要求)。有没有人对如何从 TNtuple 中提取数据并绘制图表有更好的建议?

4

3 回答 3

5

由于 TNtuple 继承自 TTree,因此您可以直接在 TNtuple 上使用 TTree 支持文档中提供的所有方法。这尤其意味着您可以使用 TTree::Draw() ,这通常足以快速绘制数据。此功能在此处记录。

对于更精细的绘图,您必须逐个事件读取 TNtuple 事件的数据,并将其提供给您最喜欢的 ROOT 中的绘图工具。这再次遵循了树的基本原则。我可以在 ROOT 主页上找到的最佳示例是在用户手册中的“阅读树”段落中的部分树。

于 2011-06-21T03:30:06.387 回答
1

用于为 TNtuples 创建直方图和绘图的方法与 TTrees 基本相同。编码:

ntuple->Draw("var");

将创建var存储在 Ntuple 中的变量的直方图。如果要将 Ntuple 中的一个变量绘制为另一个变量的函数,请使用

ntuple->Draw("xVar:yVar");

您可以做一些更有趣的事情,例如仅在满足逻辑条件时才创建绘图。例如,假设您需要var1仅当var2大于 2 且var3小于 0 时的直方图。

ntuple->Draw("var","var2 > 2 && var3 < 0");

通过以这种方式绘图,ROOT 会自动设置 x 轴的分箱和范围。如果您想自己控制这些功能,请使用

ntuple->Draw("var >> hist(Nbins,xmin,xmax)");

这将创建 object hist,您将其视为 ROOT 中的常用直方图对象。如上一篇文章所述,这与其他几个功能和工具一起记录在 ROOT 手册中。不幸的是,手册并不总是给出明确的解释。

于 2012-07-29T19:22:21.293 回答
0
{
  ntuple->Draw("py:px","px>py","goff");
  TGraph *gr = new TGraph(ntuple->GetSelectedRows(),ntuple->GetV2(), ntuple->GetV1());
  gr->Draw("AP");
}
于 2015-03-02T15:45:43.900 回答