ROOT(CERN C++ 库)替代方案

计算科学 C++
2021-12-23 13:10:53

一年多以来,我一直在慢慢学习 C++ 和 ROOT,以便调试用它制作的程序。

现在我达到了一个我可以真正理解这永远不会变得更容易的地步。因此,我正在寻找一些替代方案的建议。

我需要的是可以做的东西,绘图、直方图、2D 和 3D,并且具有良好的最小化例程,特别是快速的学习曲线并且易于编写和调试。

我还需要它快速,例如我现在需要跑到超过 600k 次,这大约需要 1 小时 30 分钟。但是我花更多的时间来编写它,所以如果我将运行时间加倍并减少一半的编程时间,这将是值得的。

目前我知道,Matlab/octave 和 C++。

谢谢!

3个回答

您可能想用NumPy / SciPy查看 Python (还有更多可用的包;例如,pandas是一个专用的数据分析库)。语法介于 Matlab 和 C 之间,因此不应该太难学。Matlab 用户页面也有一个有用的NumPy 。优点之一是很容易将部分代码“外包”给 C/C++,例如使用Cython这意味着您可以原型化然后分析您的算法,并且只将计算最密集的例程移到 C 中,将所有输入/输出和驱动例程保留在 Python 中。

嗯...对于粒子物理社区使用的工具,有PAWCERNLIB的一部分,根被替换并且不再支持,除非作为遗留)和 Physica(我多年没见过,甚至找不到网站for),这可能不是您想要的。

但是,如果您一直在 cint 界面中工作以获取 root,那么您可能会在完全更改工具之前考虑使用 Python 界面。

然后,您可以按照vanComputeChristian的建议走出粒子物理学社区。这里最大的风险——如果你在做核物理学或粒子物理学——是你的同事将无法帮助你解决你遇到的任何问题,并且可能不明白这个工具对你做了什么让谈话变得更尴尬. 我在会谈中看到很多问题都以“我使用了 root 的 Foo 工具”来回答,让每个人都感到满意。

有时——当你想要做的事情真的很不寻常时——值得把处理从黑盒中移开:在你完全控制的地方手工编码(并在你去的时候编写一个测试套件,因为你需要能够证明它是正确的!)并且只返回包装进行绘图。但是,与所有自己动手的解决方案一样,这不是一个可以掉以轻心的步骤。

你试过 R: http://www.r-project.org吗?我不知道它有多快......我不知道它是否有最小化例程......