用cernroot写一个小程序,读入指定文件内的数据并增加变量后输出到新文件中
时间: 2023-06-18 12:04:48 浏览: 87
以下是一个使用CERN ROOT库编写的读取指定文件内的数据并增加变量后输出到新文件中的小程序:
```cpp
#include <iostream>
#include <TFile.h>
#include <TTree.h>
int main()
{
// 打开文件
TFile *f1 = new TFile("input.root");
TTree *t1 = (TTree*)f1->Get("Tree");
// 准备输出文件
TFile *f2 = new TFile("output.root", "RECREATE");
TTree *t2 = new TTree("Tree", "Tree with additional variable");
// 定义变量
int variable1;
float variable2;
// 在输入文件的树中添加变量
t1->SetBranchAddress("Variable1", &variable1);
t1->SetBranchAddress("Variable2", &variable2);
// 在输出文件的树中添加原有变量
t2->Branch("Variable1", &variable1, "Variable1/I");
t2->Branch("Variable2", &variable2, "Variable2/F");
// 添加新变量
float variable3;
t2->Branch("Variable3", &variable3, "Variable3/F");
// 遍历输入文件的树并填充输出文件的树
int nentries = t1->GetEntries();
for (int i=0; i<nentries; i++) {
t1->GetEntry(i);
variable3 = variable1 + variable2;
t2->Fill();
}
// 写入输出文件并关闭文件
t2->Write();
f2->Close();
// 关闭输入文件
f1->Close();
return 0;
}
```
这个程序读取名为"input.root"的ROOT文件中的名为"Tree"的树,然后在该树的每个事件中添加一个名为"Variable3"的新变量,其值为"Variable1"和"Variable2"的和。然后,程序将新的树和变量写入名为"output.root"的文件中,并关闭输入和输出文件。
阅读全文