gpt4 book ai didi

python - pyLCIO setMomentum : error const float* in python

转载 作者:搜寻专家 更新时间:2023-10-31 02:07:02 25 4
gpt4 key购买 nike

上下文:

我正在实现 particle physics library名为 LCIO 的 C++ 代码,但有一个名为 pyLCIO 的 python 包装器。

当尝试运行名为 setMomentum() 的函数时,C++ 实现如下所示:

void    setMomentum (const float p[3])

简单的 float 组。

好的 python,让我们试试这个:

 particle.setMomentum([1.0,2.0,3.0])

问题:

现在这引发了一个错误。这是回溯:

Traceback (most recent call last):
File "driver.py", line 5, in <module>
particle.setMomentum(momentum)
File "/path/to/pyLCIO/base/HandleExceptions.py", line 17, in wrappedMethod
return method(*args, **kargs)
TypeError: none of the 2 overloaded methods succeeded. Full details:
void MCParticleImpl::setMomentum(const float* p) =>
could not convert argument 1
void MCParticleImpl::setMomentum(const double* p) =>
could not convert argument 1

现在这个函数要求一个#1 常量,#2 对数组头部的引用。我应该如何使用 Python 执行此操作?

有没有用过 python 包装 C++ 代码的人知道如何在 python 中创建 const float*

感谢您的帮助。

编辑 180314

我试过:

particle.setMomentum((1.0,2.0,3.0))

无果;同样的错误。

最佳答案

基于 http://lcio.desy.de/v01-07/src/python/lcio_swig.i ,看起来他们使用元组而不是数组来表示 3 元素 vector 。

您应该能够执行“particle.setMomentum((1.0, 2.0, 3.0))”之类的操作并使其正常工作。同样,getMomentum 将返回一个 3 元素元组。

关于python - pyLCIO setMomentum : error const float* in python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49270010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com