PyROOT/rootpy中的直方图克隆方法

2024-05-19 01:34:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用rootpy绘制根直方图,遇到了一个奇怪的问题。 我用以下方法得到根直方图:

    Histo1 = FilePure.Get(HistoName + str("incl") + str(0))

其中Histoname是我需要的东西的名字。然后我想从这张图中找出另外两个与(错误值)相关的直方图,因此我将Histo1“克隆”两次,如下所示:

^{pr2}$

现在,当我在原始Histo1对象上执行一个操作(在我的例子中,我用一个常量因子重新缩放每个bin),然后打印所有3个直方图的值时,Histo1和HistoMin中的值已更改,但HistoMax没有! 我对此很困惑,所以任何帮助都将不胜感激! 干杯, 杰克

另外,对于那些对python/OO非常了解的非ROOT/rootpy用户,这里有一个指向doc的链接。对于“Clone()”: http://root.cern.ch/root/html/TNamed.html#TNamed:Clone


Tags: 方法getclonehtml绘制root直方图rootpy
1条回答
网友
1楼 · 发布于 2024-05-19 01:34:34

我认为你的代码中可能有一个bug没有显示出来。在

HistoMin是否以某种方式引用回代码中的其他地方Histo1?在

我看到了正确的行为(只有原始柱状图被更改):

>>> from rootpy.plotting import Hist
>>> a = Hist(10, -3, 3)
>>> a.FillRandom('gaus')
>>> b = a.Clone()
>>> c = a.Clone()
>>> list(a.y())
[39.0, 136.0, 394.0, 796.0, 1131.0, 1106.0, 817.0, 397.0, 144.0, 40.0]
>>> list(b.y())
[39.0, 136.0, 394.0, 796.0, 1131.0, 1106.0, 817.0, 397.0, 144.0, 40.0]
>>> list(c.y())
[39.0, 136.0, 394.0, 796.0, 1131.0, 1106.0, 817.0, 397.0, 144.0, 40.0]
>>> a *= 3
>>> list(a.y())
[117.0, 408.0, 1182.0, 2388.0, 3393.0, 3318.0, 2451.0, 1191.0, 432.0, 120.0]
>>> list(b.y())
[39.0, 136.0, 394.0, 796.0, 1131.0, 1106.0, 817.0, 397.0, 144.0, 40.0]
>>> list(c.y())
[39.0, 136.0, 394.0, 796.0, 1131.0, 1106.0, 817.0, 397.0, 144.0, 40.0]

相关问题 更多 >

    热门问题