Skip to content

Efficiency versus a variable with binomial intervals

rf.efficiency fills the entries passing selection (all here) and those also passing passed with one binning, and draws their ratio with Wilson score intervals. The muon identification efficiency versus transverse momentum, for two samples.

import rootfig as rf

style = rf.Style()

rf.efficiency([signal, zjets], pt, passed="Muon_isTight", ylim=(0.5, None), style=style)
import rootfig as rf

style = rf.Style(experiment="ATLAS", status="Internal", lumi=140, com=13.6)

rf.efficiency([signal, zjets], pt, passed="Muon_isTight", ylim=(0.5, None), style=style)
import rootfig as rf

style = rf.Style(experiment="CMS", status="Preliminary", lumi=138, com=13.6)

rf.efficiency([signal, zjets], pt, passed="Muon_isTight", ylim=(0.5, None), style=style)
import rootfig as rf

style = rf.Style(experiment="LHCb", status="Preliminary", lumi=9, com=13.6)

rf.efficiency([signal, zjets], pt, passed="Muon_isTight", ylim=(0.5, None), style=style)
import rootfig as rf

style = rf.Style(experiment="ALICE", status="Preliminary")

rf.efficiency([signal, zjets], pt, passed="Muon_isTight", ylim=(0.5, None), style=style)
import rootfig as rf

style = rf.Style(experiment="DUNE", status="Preliminary")

rf.efficiency([signal, zjets], pt, passed="Muon_isTight", ylim=(0.5, None), style=style)
Setup

The code reads the toy dataset. In a checkout of rootfig, python examples/gallery writes it to examples/out/ in a few seconds; run the code inside that directory.

It uses these samples and variables, shared by the gallery examples (see Samples, variables, cuts and styles):

signal = rf.Sample("signal.root", tree="events", label="Signal", weight="weight", scale=0.03)
zjets = rf.Sample("background.root", tree="events", label="Z + jets", weight="weight")
diboson = rf.Sample("diboson.root", tree="events", label="Diboson", weight="weight", scale=0.15)
data = rf.Sample("data.root", tree="events", label="Data", is_data=True)
mc = [zjets, diboson, signal]  # stacked bottom to top

pt = rf.Variable("Muon_pt", bins=(30, 0, 300), label=r"$p_T^{\mu}$", unit="GeV")
mll = rf.Variable("m_ll", bins=(70, 50, 260), label=r"$m_{\ell\ell}$", unit="GeV")
met = rf.Variable("MET", bins=(40, 0, 400), label=r"$E_T^{miss}$", unit="GeV")