forked from scikit-hep/uhi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_root.py
39 lines (31 loc) · 1.15 KB
/
test_root.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import numpy as np
import pytest
from pytest import approx
from uhi.numpy_plottable import ensure_plottable_histogram
ROOT = pytest.importorskip("ROOT")
def test_root_imported() -> None:
assert ROOT.TString("hi") == "hi"
def test_root_th1f_convert() -> None:
th = ROOT.TH1F("h1", "h1", 50, -2.5, 2.5)
th.FillRandom("gaus", 10000)
h = ensure_plottable_histogram(th)
assert all(th.GetBinContent(i + 1) == approx(iv) for i, iv in enumerate(h.values()))
assert all(
th.GetBinError(i + 1) == approx(ie)
for i, ie in enumerate(np.sqrt(h.variances())) # type: ignore
)
def test_root_th2f_convert() -> None:
th = ROOT.TH2F("h2", "h2", 50, -2.5, 2.5, 50, -2.5, 2.5)
_ = ROOT.TF2("xyg", "xygaus", -2.5, 2.5, -2.5, 2.5)
th.FillRandom("xyg", 10000)
h = ensure_plottable_histogram(th)
assert all(
th.GetBinContent(i + 1, j + 1) == approx(iv)
for i, row in enumerate(h.values())
for j, iv in enumerate(row)
)
assert all(
th.GetBinError(i + 1, j + 1) == approx(ie)
for i, row in enumerate(np.sqrt(h.variances())) # type: ignore
for j, ie in enumerate(row)
)