我目前正尝试从rootpy访问DeltaR等数学函数,但我不确定如何完成。我在文档或任何示例中都没有看到任何内容。 C ++等价物将类似于:
double dR = ROOT::Math::VectorUtil::DeltaR((jets)[i],(partons)[i]);
但我无法找到能够工作的rootpy甚至pyroot。如果我尝试使用
进行pyrootimport ROOT as r
r.Math.VectorUtil.DeltaR(jets[i],partons[i])
我收到错误:
AttributeError: type object 'ROOT::Math' has no attribute 'VectorUtil'
当它非常清楚的时候,除非我不正确地理解属性'的含义。无论如何,我不想在这里问pyroot问题:)我只是把这个问题放到pyroot处理这些事情的方式,这就是为什么我认为我会尝试rootpy。我不确定这是否可行。
干杯, 约瑟夫
答案 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)