import mplhep as hep
import numpy as np
from ROOT import TH1F, gBenchmark, gRandom
fig, ax =
plt.subplots(figsize=(8, 6), num=
"The HSUM Example")
BINS = 100
RANGE_MIN, RANGE_MAX = -4, 4
total =
TH1F(
"total",
"This is the total distribution", BINS, RANGE_MIN, RANGE_MAX)
main =
TH1F(
"main",
"Main contributor", BINS, RANGE_MIN, RANGE_MAX)
s1 =
TH1F(
"s1",
"This is the first signal", BINS, RANGE_MIN, RANGE_MAX)
s2 =
TH1F(
"s2",
"This is the second signal", BINS, RANGE_MIN, RANGE_MAX)
if RANGE_MIN <= x < RANGE_MAX:
idx =
int((x - RANGE_MIN) / (RANGE_MAX - RANGE_MIN) * BINS)
counts[hist_name][idx] += weight
kUPDATE = 500
N_EVENTS = 10000
for i
in range(1, N_EVENTS + 1):
xmain = gauss(-1, 1.5)
xs1 = gauss(-0.5, 0.5)
xs2 = landau(1, 0.15)
total[...] = counts["total"]
main[...] = counts["main"]
s1[...] = counts["s1"]
s2[...] = counts["s2"]
if i % kUPDATE == 0:
stats_text = f"Entries = {entries:.0f}\nMean = {mean:.2f}\nStd Dev = {stddev:.2f}"
hep.histplot(main, histtype=
"fill", color=
"gray", alpha=0.5, edgecolor=
"blue", linewidth=1.5, ax=ax)
hep.histplot(total, histtype=
"errorbar", color=
"black", ecolor=
"blue", linewidth=2, ax=ax)
hep.histplot(s1, histtype=
"errorbar", color=
"blue", alpha=0.7, ecolor=
"blue", linewidth=2, marker=
"+", ax=ax)
hep.histplot(s2, histtype=
"errorbar", color=
"blue", alpha=0.7, ecolor=
"blue", linewidth=2, marker=
"+", ax=ax)
ax.set_title(
"This is the total distribution", pad=20, fontsize=14, loc=
"center")
0.95,
0.90,
stats_text,
ha="right",
va="top",
fontsize=12,
bbox=dict(facecolor="white", edgecolor="black", boxstyle="round,pad=0.2", alpha=0.9),
)
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
1-D histogram with a float per channel (see TH1 documentation)