用cernroot读取文件并直方画图
时间: 2023-06-15 07:04:27 浏览: 244
首先需要安装 ROOT,可以参考官方文档进行安装:https://root.cern/install/
假设我们有一个名为data.txt的数据文件,可以使用以下代码读取并绘制直方图:
```cpp
#include <TFile.h>
#include <TCanvas.h>
#include <TH1F.h>
void read_and_draw() {
// 读取数据文件
TFile *f = TFile::Open("data.txt", "READ");
// 从文件中获取数据
TTree *t = (TTree*)f->Get("tree");
// 创建直方图
TH1F *hist = new TH1F("hist", "Histogram", 100, 0, 10);
// 从树中填充直方图
Double_t data;
t->SetBranchAddress("data", &data);
for (Long64_t i = 0; i < t->GetEntries(); i++) {
t->GetEntry(i);
hist->Fill(data);
}
// 绘制直方图
TCanvas *c = new TCanvas("c", "Canvas", 800, 600);
hist->Draw();
c->SaveAs("hist.pdf");
// 释放内存
delete hist;
delete c;
delete t;
f->Close();
delete f;
}
```
其中,假设数据文件中包含一个名为tree的树,树中有一个名为data的分支,存储着数据。我们使用TH1F类创建直方图,设定了100个bin,范围为0到10。然后从树中遍历数据,使用Fill方法填充直方图。最后使用TCanvas类绘制直方图,并保存为pdf格式。
阅读全文