You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

零基础编程用户如何将两个root文件相加求和得到单个root文件

ROOT文件合并方案

方法1:使用ROOT自带命令行工具(最推荐,无需写代码)

只要你已经安装了ROOT环境,直接打开终端/命令提示符,进入两个root文件所在的文件夹,执行以下命令即可直接生成合并后的file3.root:
hadd file3.root file1.root file2.root

这个命令是ROOT官方提供的专用合并工具,会自动匹配两个文件内的同名称对象:直方图类自动相加计数,TTree类自动合并条目,完全符合你需要的file1.root + file2.root = file3.root效果,对零编程经验的用户最友好。

方法2:PyROOT脚本实现(如果需要自定义合并逻辑可以用)

  • 首先确保你的设备已经配置好ROOT和PyROOT环境
  • 将以下代码保存为merge_root.py,和两个待合并的root文件放在同一个文件夹下
  • 执行命令python merge_root.py即可生成目标文件
import ROOT

# 创建输出文件
out_file = ROOT.TFile("file3.root", "RECREATE")

# 读取输入文件
f1 = ROOT.TFile("file1.root", "READ")
f2 = ROOT.TFile("file2.root", "READ")

# 遍历所有对象执行合并
for key in f1.GetListOfKeys():
    obj_name = key.GetName()
    obj1 = f1.Get(obj_name)
    # 跳过第二个文件不存在的同名对象
    if not f2.GetListOfKeys().Contains(obj_name):
        continue
    obj2 = f2.Get(obj_name)
    
    # 合并直方图
    if obj1.InheritsFrom("TH1"):
        merged_obj = obj1.Clone()
        merged_obj.Add(obj2)
        out_file.cd()
        merged_obj.Write()
    # 合并事例树
    elif obj1.InheritsFrom("TTree"):
        out_file.cd()
        chain = ROOT.TChain(obj_name)
        chain.Add("file1.root")
        chain.Add("file2.root")
        chain.Write()

# 关闭文件释放资源
out_file.Close()
f1.Close()
f2.Close()

内容的提问来源于stack exchange,提问作者Thendo Emmanuel Nemakhavhani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 15:18:05