从rootpy访问数学函数

时间:2014-04-17 12:39:51

标签: python root-framework pyroot

我目前正尝试从rootpy访问DeltaR等数学函数,但我不确定如何完成。我在文档或任何示例中都没有看到任何内容。 C ++等价物将类似于:

double dR = ROOT::Math::VectorUtil::DeltaR((jets)[i],(partons)[i]);

但我无法找到能够工作的rootpy甚至pyroot。如果我尝试使用

进行pyroot
import ROOT as r
r.Math.VectorUtil.DeltaR(jets[i],partons[i])

我收到错误:

AttributeError: type object 'ROOT::Math' has no attribute 'VectorUtil'

当它非常清楚的时候,除非我不正确地理解属性'的含义。无论如何,我不想在这里问pyroot问题:)我只是把这个问题放到pyroot处理这些事情的方式,这就是为什么我认为我会尝试rootpy。我不确定这是否可行。

干杯, 约瑟夫

2 个答案:

答案 0 :(得分:3)

ROOT::Math::VectorUtil中的函数位于libGenVector中,无论是CINT还是PyROOT都自动加载。手动加载它(就像你在root_logon.C中所做的那样)会使函数可用,例如

import ROOT as r
r.gSystem.Load('libGenVector')

# ...

r.Math.VectorUtil.DeltaR(jets[i],partons[i])

答案 1 :(得分:0)

如果喷气机和顾客都是TLorentzVector,那么你应该可以这样做:

from ROOT import *
dR = jet.DeltaR(parton)