c++ - 如何向已经存在的 TTree 添加分支:ROOT
问题描述
进行模拟后,我有一个现有的 TTree。我想向这个 TTree 添加一个分支,我想将它命名为 Muon.Mass。我还想给 Muon.Mass 分支一个 0.1 的值。
我该怎么写?
我已经看到了如何从头开始创建 TTree 并拥有不同变量的分支。但是当我已经有了 TTree 时,我不确定该怎么做。
解决方案
您可以像调用TTree::Branch
新 TTree 一样在现有 TTree 上调用该方法。只是为了填充,您需要确保只填充分支。(这是来自https://github.com/pseyfert/tmva-branch-adder的一个强烈缩减的示例)
void AddABranch(TTree* tree) {
Float_t my_local_variable;
TBranch* my_new_branch = tree->AddBranch( ... /* use address of my_local_variable */ );
for (Long64_t entry = 0 ; entry < tree->GetEntries() ; ++e ) {
tree->GetEntry();
/* something to compute my_local_variable */
my_new_branch->Fill();
}
}
作为替代方案,您可能想查看树朋友的根教程。
作为旁注,根据您要对树做什么/将树交给谁,我建议不要.
在分支名称中使用,因为它们在运行时会引起头痛MakeClass
(分支名称可以包含句点,但 c++ 变量不能,所以每个分支的自动生成的类成员将进行字符替换)。
推荐阅读
- node.js - NPM - Browserify“'import'和'export'可能只出现在'sourceType:module'”
- java - 文件构造函数无法读取 RestFull Web 服务中的文件
- r - 浪费大量内存的for循环,改成mapply?
- mysql - Find_in_set 在 mysql 查询中花费太多时间
- python-3.x - Seq2seq 用于非句子、浮点数据;卡在配置解码器
- visual-studio - 如何使用加密数据部署 SSIS 项目?
- java - println到txt文件的方法
- postgresql - 本地计算机上的 postgresql-x64-10 服务启动然后停止
- javascript - 如果我试图拆分最后一个单词,拆分句子不起作用
- reporting-services - SSRS 2012 Report Builder 3.0 同一图表上的条形图和点