问题标签 [root-framework]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1629 浏览

git - 使用 ROOT 绘制直方图时为空画布

我编写了一个加载到 ROOT 文件中的代码,然后从带有分支的文件创建 TChain。我将变量分配给用于填充直方图的不同分支。我正在尝试绘制带有切割的直方图。但是,当我运行代码时,我收到一条错误消息,上面写着“Can't call TH2F::Draw("colz","rnpe<300") in current scope...”。你可以看到下面的代码

0 投票
1 回答
3219 浏览

c++ - 宏加载多个根文件

我有一些代码加载到 ROOT 文件中,我可以从中提取所述 ROOT 文件中的分支并绘制直方图等。代码如下所示:

这对于仅加载一个文件并从该文件制作图来说效果很好而且很花哨。但是,我想加载 n 个文件并执行相同的操作。更具体地说,如果我有一个目录,其中包含我要加载的所有 ROOT 文件,我可以编写一个程序来加载该目录中的每个文件。任何帮助将不胜感激。

0 投票
1 回答
1190 浏览

c++ - 如何在头文件中声明 argv[1]

我编写的 c++ 代码有两个文件,一个是主文件(.C),另一个文件是( .h)。我需要在头文件 (*.h) 中使用 argv[1]。我怎样才能做到这一点?

实际上这个文件被写入通过root运行。

我的 AnalyzeTree.C 文件的一些内容是

AnalyzeTree.h 文件的一些内容是

目前我得到的错误是

0 投票
0 回答
210 浏览

python - Python C API:省略变量赋值导致意外行为

在将 python 与 pyroot(一个名为ROOT的 CERN 数据分析包的 python 接口)一起使用时,我遇到了以下奇怪的行为:

输出None,而看似语义等价的代码

输出预期的<ROOT.THashList object ("THashList") at 0x13f0fa0>.

虽然这不是我在使用 ROOT 时遇到的第一个错误,但这次我很困惑 python 允许这个错误发生。

我认为不知何故,TFile 对象的引用计数在第一个示例中出错了,并且在实际调用 GetListOfKeys 之前它被删除了。(设置ROOT.TFile.__del__为一些打印命令后,确实会发生这种情况。)

我看到它的方式,在 ROOT.TFile(fname) 被执行之后,但在 GetListOfKeys() 被调用之前,指向 TFile 对象的指针在堆栈上。因此,引用计数不应为零,并且在 GetListOfKeys() 返回之前不应调用析构函数。

任何人都可以解释为什么会这样吗?

在相关的说明中,有没有办法del仅仅因为引用计数变为零就禁止 python 隐式地访问我的对象?我尝试了 gc.disable(),并没有改变结果。有没有比将对象附加到一些全局定义的只写列表更优雅的解决方案?

0 投票
2 回答
945 浏览

crash - root (cern) 因 libpng 问题而崩溃 Fedora 20

我从源代码安装了最后一个版本的 root,从 cern 网站下载,由于我在消息末尾附加的错误,我无法打开 TBrowser。我已经在根论坛上搜索了几个问题的帮助,但没有找到任何对我有用或对我有帮助的东西。谁能帮我调试这个问题?感谢您的回复

0 投票
1 回答
221 浏览

c++ - 如果我将向量传递给另一个类,为什么 ROOT 只会让我将 TCanvas 向量的最终元素设置为另一个 TCanvas 向量?

问题

我想开始动态地将 TCanvas 从程序的“模型”部分动态传递到“视图”部分。我考虑这样做的方式是在启动时在 View 上创建我的 TCanvas,然后在填充图表后使用 View TCanvas 更新此 TCanvas。我创建了一个测试台,看看它是否可以工作。

我展示了一种工作方法和损坏的方法。

我正在使用 QT-ROOT,TQtWidget是一个自定义小部件,它本质上是对 TCanvas 的一种支持。

设置我的画布

这个作品

对应输出:

工作方法

尽管图表的顺序错误。

这不起作用

我将此方法转移到另一个类并通过信号/插槽将 TCanvas 传回。

然后将图形数据发送到这里:

这是此方法的输出:

尝试 2

目前我能看到的唯一错误是我在 SetupTab 中得到了这个:

0 投票
2 回答
904 浏览

c++ - CERN 根 - 基于时间过滤子树事件时出错

我之前在官方根(CERN)论坛上问过这个问题,但到目前为止问题仍未解决。也许这里的任何人都可以通过指出我的错误或提出替代方法来提供帮助?

我有一个带有事件的 TTree;TTree 有一个分支,其中包含每个事件的 UNIX 时间和一些其他分支。我想根据时间间隔选择事件的子集,以便我可以单独分析这些事件。为了进行选择,我创建了另一棵树并在正确的时间间隔内复制所有条目。

以下代码运行良好,并将所有事件从树复制到子树:

当我用实际条件替换 if(true) 时会出现问题:

我收到错误:“错误:指向类对象子树的非法指针 0x0 3084 c:/.... * 已恢复解释器错误 *

错误行指的是 (*subtree) -> Fill(),与第一个示例中运行良好的代码相同。对于不涉及 t 或任何不涉及子树的 if-body 的任何条件,该代码都有效。谁能解释这里出了什么问题?

谢谢!

(作为参考,原始问题的链接:http ://root.cern.ch/phpBB3/posting.php?mode=edit&f=3&p=79722 )

0 投票
1 回答
1240 浏览

python - 如何在 PyROOT 中使用 TTreeReader

我正在尝试使用 TTreeReader 方法启动并运行以在 PyROOT 中读取 TTree。作为指导,我正在使用 ROOT 6 Analysis Workshop ( http://root.cern.ch/drupal/content/7-using-ttreereader ) 及其相关的 ROOT 文件 ( http://root.cern.ch/root /files/tutorials/mockupx.root)。

在这之后,我有点失落。我尝试使用 TTreeReader 对象访问变量信息,但它不太有效:

我在哪里错了?

0 投票
1 回答
1550 浏览

c++ - 使用直方图作为函数的参数

嘿,我现在正在使用 ROOT,我创建了一个宏,它将采用两个直方图并从另一个中减去一个,并循环遍历每个 bin 以检查是否有任何非零 bin,这将测试直方图是否是平等的。

目前我在宏内创建两个直方图只是为了测试函数,第三个直方图是 Hist 1 - Hist 2 但我想做它,这样我就可以将任意两个直方图作为参数输入到宏中并执行测试.

我怎样才能做到这一点?

宏目前是这样的,提醒你里面的两个直方图只是为了测试它:

0 投票
0 回答
68 浏览

c++ - 在 ROOT TSelector 中截断的指针

我正在使用科学框架 ROOT,所以我将提供一些关于我正在做什么的细节,但是如果有人对可能导致这种情况的原因有任何一般性的想法,也许我可以进入源代码并找出什么是正在发生,因为我知道没有很多人使用过 ROOT。

我正在使用 T.Process() 处理 TTree(ROOT 数据结构)。基本上,T.Process 使用一个名为 objdef 的类来分析 TTree 中的数据。它循环遍历 TTree 中的数据并填充将作为新 TTree 输出的向量(如果被问到,我可以更详细地介绍,但我认为陈述我的一般问题比尝试在这个问题中解释整个 ROOT 框架更好) .

指向输出向量的指针在 objdef 类定义中声明。对于我运行的大多数示例,整个系统运行良好。但是对于某些示例,指针有时似乎被截断 (?),从而导致 seg 错误。这是一个例子:

objdef 声明中声明的一些指针是:

当我运行 T.Process() 时,指针显示为,例如:

第三个指针到底是怎么回事!在每次运行代码期间,哪个指针被截断似乎是随机的。

我希望我能更具体一些,也许来自 SO 的一些尖锐问题可以帮助我确定发生了什么。或者,如果有人知道可能导致这样的指针截断的一般事情,我很想听听。

更新

当我对坏指针执行 sizeof 时,它返回 8。

更新 2

显然,在实际分配任何内存之前,一些指针被初始化为随机值(或者从未初始化为零?),然后没有为它们分配内存。我怀疑 ROOT 框架(特别是 Cint)中有一些错误,但我找到了一种解决方法 - 将所有指针显式设置为 0,从而强制 ROOT 为它们分配内存并给它们一个内存地址。它现在正在工作。似乎这些指针实际上并没有被截断——相反,它们只是一个很小的值。他们从来没有真正的内存地址,所以他们一开始就不会被截断。