标签: root-framework

Python,ROOT和MINUIT集成?

我是高能粒子物理系的一名谦虚的研究生.由于对C/C++毫无根据的厌恶以及对python的热爱,我到目前为止已经使用python进行数据分析(只是简单的事情)并且我将尝试支持针对ROOT库的python脚本,特别是使用MINUIT一些参数最小化.

除了询问是否有人对这些的安装和使用有任何提示,我想知道是否值得尝试它或只是为了使用C/C++的"规范",或者像pyminuit这样的东西是可用的.或者您认为我可以将整个C/C++脚本包装成python代码以利用我现有的自编分析方法(我还没有包装经验).抱歉模糊不清; 我走向了一个远远超过我目前经历的伟大未知.

python data-analysis word-wrap root-framework

3
推荐指数
1
解决办法
1763
查看次数

快速(以开发人员的方式)使用Java的大量C++代码的方式

背景:我们正在设计一个物理应用程序,它将进行大量的数据分析,但我们的重点是整合物理电子设备.

基本上我希望能够用Java编写的C++库编写的root(它是用C++编写的CERN的大数据分析库).基本上从Java中使用ROOT类的能力(并且不会浪费太多时间来编写JNI包装器)对我们来说是一个显而易见的事情(如果它很难,我们很可能会使用Qt).

我可以想到以下方法

  • JNI - 正如我所说 - 我们不想为每个班级写包装...
  • JNA - JNA不提供C++映射,但只提供C.
  • SWIG - 我没有使用它,但听说它很难使用.

其他可能很重要的事情:我们可以访问根源代码,但我们不想改变它.我们希望结果是可移植的.我们想坚持免费图书馆.正如我所说 - 我们可以从一开始就使用大量的ROOT代码,而不用大惊小怪.

c++ java interop root-framework

3
推荐指数
1
解决办法
494
查看次数

如何在ROOT中编译多个文件

我写了一个C++程序(有一个main.cpp,各种标题和实现文件),可以在g ++下编译.现在我试图在Cern的ROOT库中编译它,但我不知道如何,因为我知道如何在ROOT中编译文件的唯一方法是使用.L main.cpp.

如何在ROOT中包含多个文件?

c++ compilation root-framework

3
推荐指数
1
解决办法
7560
查看次数

python中C++向量的实例(对于pyROOT中的TTrees)

我正在尝试使用python为TTree(ROOT对象)创建一个过滤器pyROOT.我从TTree获得了几个分支的信息,其中一些分支是C++类型的vector<int>,vector<float>或者vector<string>是.

为了将信息传递到新树,我需要从旧树访问它,我需要将向量等的地址传递给树,然后填充树.为此,我需要访问这样一个新向量的地址.这在C++中非常简单,但在查看Cython和boost之后,我无法解决这个问题.最终我想要像:

cppintvectorinpython = getcppintvector()    
oldtree.setbranchaddress(branchname,cppintvectorinpython)
Run Code Online (Sandbox Code Playgroud)

这可能吗?

c++ python boost cython root-framework

3
推荐指数
1
解决办法
3720
查看次数

Cern ROOT-如何将TTree根文件中的内容读取到数组中

我正在尝试从Cern ROOT TTree文件中读取数据。我以前没有使用过root,为此我有点挣扎。我对C ++很熟悉,因此可以对数组的内容进行排序,但是我已经在线浏览了多个教程页面,但是却一无所获。

如何从TTree文件读取数据?我认为可以通过在for循环内遍历树的节点(再次,我不确定文件的组织方式?)来完成。

这是我一直尝试遵循的一种参考示例。

https://root.cern.ch/drupal/content/using-macro-read-ttree

据我了解,这是一个通用的问题,但是TTree不是通用的吗?(因为它们可以包含不同的变量名,所以我认为?)

因此,我认为重要的进一步信息是:

通过打开根对象浏览器TBrowser b-并浏览到'.root'文件,(并双击它),我可以看到该文件中有12个变量。例如,一个叫做“质量”,“电荷”等。

希望有足够的信息?如果没有,我可以提供更多。

c++ root-framework

3
推荐指数
1
解决办法
2万
查看次数

如果两个数字是相同的 0,则在 C++ 和 Root 中使 0 条件

在我的代码中,图例在循环内运行,我试图显示一个图表

0-10%
10-20%
Run Code Online (Sandbox Code Playgroud)

等等。问题是当我写这段代码时

legend->AddEntry(gr[i], Form("%d0-%d0 %%",i+0,i+1), "lep");
Run Code Online (Sandbox Code Playgroud)

表明

00-10%
10-20% etc
Run Code Online (Sandbox Code Playgroud)

那么如何在第一行不显示00,而是显示0呢?

c c++ root-framework

3
推荐指数
1
解决办法
68
查看次数

CERN ROOT将数据导出为纯文本

所以,我已经试了又试遵循类似的问题问像这一个,但都没有成功。

这真的很简单-我有一些.root文件,可以看到ROOT中的直方图,但希望将数据导出为.txt或类似文件,以便能够在其他程序中进行分析。

export analysis root-framework

2
推荐指数
1
解决办法
8521
查看次数

无法找到包 openssl-dev

我正在尝试在 Linux 上安装 ROOT CERN 软件包,使用 Ubuntu 18.04,每当我进入先决条件下载时,使用以下命令:

sudo apt-get install dpkg-dev cmake g++ gcc binutils libx11-dev libxpm-dev libxft-dev libxext-dev python openssl-dev
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package openssl-dev
Run Code Online (Sandbox Code Playgroud)

我已尝试按照此线程中的建议配置我的存储库来纠正此问题,但问题仍然存在。

想知道如何解决这个问题。谢谢你。

编辑:

sudo apt update命令的完整输出是:

Hit:1 http://us.archive.ubuntu.com/ubuntu bionic InRelease
Hit:2 http://security.ubuntu.com/ubuntu bionic-security InRelease
Hit:3 http://us.archive.ubuntu.com/ubuntu bionic-updates InRelease
Reading package lists... Done                     
Building dependency tree       
Reading state information... Done
All packages are up to date.
Run Code Online (Sandbox Code Playgroud)

我也尝试安装 libssl-dev …

package package-management root-framework

2
推荐指数
1
解决办法
5281
查看次数

CERN ROOT从TNtuple中提取数据

我正在使用CERN的ROOT框架(必需),我想从TNtuple中获取数据并绘制图形.我可以在创建TNtuple时或在将其写入.root文件之后绘制数据图形.一些支持文档建议我创建一个TTree,但这似乎可能是过度/迂回,因为我不会将它用于其他任何事情(并且TNtuple满足我的所有其他要求).有没有人有更好的建议如何从TNtuple中提取数据并绘制图表?

c++ database graph root-framework

1
推荐指数
1
解决办法
2887
查看次数

有没有办法在 C++ 循环内创建函数数组

我正在使用 ROOT Cern 来求解多变量非线性方程组。对于某些问题,我有 4 个函数和 4 个变量。然而,对于其他人,我需要 20 个函数和 20 个变量。我使用一个名为“WrappedParamFunction”的类来包装函数,然后将包装的函数添加到“GSLMultiRootFinder”来解决它们。该函数是这样包装的:

ROOT::Math::WrappedParamFunction<> g0(&f0, "number of variables", "number of parameters");
Run Code Online (Sandbox Code Playgroud)

因此,我需要在我的void main(){}代码部分之前声明 f0...fi 函数。我以这种方式声明函数:

double f0(const double *x, const double *par){return -par[0]+y[0]*par[1];}
double f1(const double *x, const double *par){return -par[1]+y[1]*par[2];}
.
.
Run Code Online (Sandbox Code Playgroud)

有没有办法在循环内创建这些函数并将它们堆叠在数组中?像这样的东西:

double (*f[20])(const double *x, const double *par);
for(int i=0;i<20;i++){
   f[i]= -par[i]+x[i]*par[i+1];
}
Run Code Online (Sandbox Code Playgroud)

这样稍后我就可以用这种方式包装函数:

ROOT::Math::WrappedParamFunction<> g0(f[0], "number of variables", "number of parameters");
Run Code Online (Sandbox Code Playgroud)

c++ root-framework

1
推荐指数
1
解决办法
187
查看次数

在ROOT中绘制ASCII文件

我正在尝试编写一个小宏,它从具有4列的ASCII文件中读取数据.但是我想仅将第二列的第二列绘制为(x,y).

c++ root-framework

0
推荐指数
1
解决办法
2973
查看次数