我选择在这里问一个问题,我很清楚我可能会违反 StackExchange 的一些规则,因为这不是问这个问题的正确地方,但我看到了很多与 CERN ROOT 相关的问题。我知道在这里回答问题的人更喜欢展示方法而不是给出一个成熟的解决方案,但我需要一些帮助,我没有时间从答案中学习,我只想要我的问题的解决方案。我提前道歉!
这是我的问题:我有两个 .root 文件:
- 频谱之一(“sezione_misura_90.root”),
- 一个来自背景(“sezione_fondo_90.root”)。
我必须从第一个中减去第二个并得到最终的直方图。通常我用 TBroswer 打开文件,我不知道如何实现脚本的宏来打开 .root 文件或做其他所有事情,首先因为我讨厌 ROOT 和所有与编程相关的东西,而且我只有一门课程我应该在哪里使用它,没有人告诉我怎么用!!!即使是教授。不知道怎么用...
如果某个阅读者有一个可以使用的宏或脚本,我将永远感谢他与我分享。提前致谢!
编辑 我用以下几行写下一个名为 run.cxx 的文件
诠释运行(){
// Open both files side-by-side
TFile* sezione_misura_90 = new TFile("sezione_misura_90.root");
TFile* sezione_fondo_90 = new TFile("sezione_fondo_90.root");
// Get the histograms from the file
// Since you didn't say from your post, I'm going to assume that
// the histograms are called "hist" and that they hold floating
// point values (meaning, they're TH1F histograms. The "F" means float)
TH1F* h_misura = (TH1F*) sezione_misura_90->Get("hist");
TH1F* h_fondo = (TH1F*) sezione_fondo_90->Get("hist");
// Now we add them together
TH1F* h_sum = h_misura->Add(*h_fondo, -1);
有一些错别字,例如 ( 和 ;,我更正了它们,但我得到了以下内容。
错误:指向类对象 h_misura 0x0 139 run.cxx:21 的非法指针: ** 解释器错误已恢复 **