1

我正在尝试从仅包含一个变量的 TTree 创建一维直方图。

TTree *tree = new TTree("tree", "");
tree->ReadFile("occupancyPerDataset.txt", "size");

TH1F *occupancy = new TH1F("occupancy", "Occupancy per Dataset", 100, 0,      0.063)

在上面你可以看到我创建了树并用文件中的数据填充了它.txtx_low然后,x_high我使用我需要的 bin 数量创建了直方图。当我尝试做

occupancy->Fill(tree);

或者

occupancy->Fill(size);

我得到一个错误。有什么建议么?

4

2 回答 2

3

TH1(TH1F 是子类)的Fill方法不以树为参数。

你有两个选择:

  1. 循环遍历树条目并将它们一一填充到直方图中。

    例如通过调用tree->MakeClass("MYTREE")然后通过添加来操作Loop()函数MYTREE.C

    occupancy->Fill(VARIABLENAME);
    

    进入循环并执行生成的代码。

  2. 使用TTree 的 Draw 方法

    tree->Draw("VARIABLENAME>>HISTOGRAMNAME");
    
于 2015-04-29T15:39:51.460 回答
0

有几个选项可以从 TTree 对象中绘制和提取直方图,其中一些可以在 ROOT 教程中找到,这些教程可以在此处在线找到,也可以在本地(如果已安装教程)在 $ROOTSYS/tutorials/tree/ 下找到。basic2 示例可能对您尝试做的事情有所帮助。

于 2015-07-08T18:07:01.070 回答