Skip to content

Commit

Permalink
merge with upstream
Browse files Browse the repository at this point in the history
  • Loading branch information
Philip Daniel Keicher committed Jan 15, 2025
2 parents 8a08e48 + e7f46e5 commit 9bf8796
Show file tree
Hide file tree
Showing 22 changed files with 1,315 additions and 925 deletions.
63 changes: 39 additions & 24 deletions hbt/calibration/default.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,30 +71,45 @@ def default_init(self: Calibrator) -> None:
met_name = self.config_inst.x.met_name
raw_met_name = self.config_inst.x.raw_met_name

# derive calibrators to add settings
self.jec_full_cls = jec.derive("jec_full", cls_dict={
"mc_only": True,
"nominal_only": True,
"met_name": met_name,
"raw_met_name": raw_met_name,
})
self.jec_nominal_cls = jec_nominal.derive("jec_nominal", cls_dict={
"met_name": met_name,
"raw_met_name": raw_met_name,
})

# version of jer that uses the first random number from deterministic_seeds
self.deterministic_jer_cls = jer.derive("deterministic_jer", cls_dict={
"deterministic_seed_index": 0,
"met_name": met_name,
})

# derive tec calibrators
self.tec_cls = tec.derive("tec", cls_dict={"met_name": met_name})
self.tec_nominal_cls = tec_nominal.derive("tec_nominal", cls_dict={"met_name": met_name})

# derive met_phi calibrator (currently only for run 2)
self.met_phi_cls = met_phi.derive("met_phi", cls_dict={"met_name": met_name})
# derive calibrators to add settings once
flag = f"custom_calibs_registered_{self.cls_name}"
if not self.config_inst.x(flag, False):
# jec calibrators
self.config_inst.x.calib_jec_full_cls = jec.derive("jec_full", cls_dict={
"mc_only": True,
"nominal_only": True,
"met_name": met_name,
"raw_met_name": raw_met_name,
})
self.config_inst.x.calib_jec_nominal_cls = jec_nominal.derive("jec_nominal", cls_dict={
"met_name": met_name,
"raw_met_name": raw_met_name,
})
# version of jer that uses the first random number from deterministic_seeds
self.config_inst.x.calib_deterministic_jer_cls = jer.derive("deterministic_jer", cls_dict={
"deterministic_seed_index": 0,
"met_name": met_name,
})
# derive tec calibrators
self.config_inst.x.calib_jec_cls = tec.derive("tec", cls_dict={
"met_name": met_name,
})
self.config_inst.x.calib_jec_cls = tec_nominal.derive("tec_nominal", cls_dict={
"met_name": met_name,
})
# derive met_phi calibrator (currently only used in run 2)
self.config_inst.x.calib_met_phi_cls = met_phi.derive("met_phi", cls_dict={
"met_name": met_name,
})
# change the flag
self.config_inst.set_aux(flag, True)

self.jec_full_cls = self.config_inst.x.calib_jec_full_cls
self.jec_nominal_cls = self.config_inst.x.calib_jec_nominal_cls
self.deterministic_jer_cls = self.config_inst.x.calib_deterministic_jer_cls
self.tec_cls = self.config_inst.x.calib_jec_cls
self.tec_nominal_cls = self.config_inst.x.calib_jec_cls
self.met_phi_cls = self.config_inst.x.calib_met_phi_cls

# collect derived calibrators and add them to the calibrator uses and produces
derived_calibrators = {
Expand Down
5 changes: 5 additions & 0 deletions hbt/categorization/default.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@ def cat_tautau(self: Categorizer, events: ak.Array, **kwargs) -> tuple[ak.Array,
return events, events.channel_id == self.config_inst.channels.n.tautau.id


@categorizer(uses={"channel_id"})
def cat_ee(self: Categorizer, events: ak.Array, **kwargs) -> tuple[ak.Array, ak.Array]:
return events, events.channel_id == self.config_inst.channels.n.ee.id


@categorizer(uses={"channel_id"})
def cat_mumu(self: Categorizer, events: ak.Array, **kwargs) -> tuple[ak.Array, ak.Array]:
return events, events.channel_id == self.config_inst.channels.n.mumu.id
Expand Down
45 changes: 32 additions & 13 deletions hbt/config/categories.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,18 @@ def add_categories(config: od.Config) -> None:
Adds all categories to a *config*.
"""
# lepton channels
add_category(config, name="etau", id=1, selection="cat_etau", label=r"$e\tau_{h}$")
add_category(config, name="mutau", id=2, selection="cat_mutau", label=r"$\mu\tau_{h}$")
add_category(config, name="tautau", id=3, selection="cat_tautau", label=r"$\tau_{h}\tau_{h}$")
add_category(config, name="mumu", id=4, selection="cat_mumu", label=r"$\mu\mu$")
add_category(config, name="emu", id=5, selection="cat_emu", label=r"$e\mu$")
add_category(config, name="etau", id=1, selection="cat_etau", label=config.channels.n.etau.label)
add_category(config, name="mutau", id=2, selection="cat_mutau", label=config.channels.n.mutau.label)
add_category(config, name="tautau", id=3, selection="cat_tautau", label=config.channels.n.tautau.label)
add_category(config, name="ee", id=4, selection="cat_ee", label=config.channels.n.ee.label)
add_category(config, name="mumu", id=5, selection="cat_mumu", label=config.channels.n.mumu.label)
add_category(config, name="emu", id=6, selection="cat_emu", label=config.channels.n.emu.label)

# qcd regions
add_category(config, name="os", id=10, selection="cat_os", label="Opposite sign", tags={"os"})
add_category(config, name="ss", id=11, selection="cat_ss", label="Same sign", tags={"ss"})
add_category(config, name="iso", id=12, selection="cat_iso", label=r"$\tau_{h,2} isolated$", tags={"iso"})
add_category(config, name="noniso", id=13, selection="cat_noniso", label=r"$\tau_{h,2} non-isolated$", tags={"noniso"}) # noqa: E501
add_category(config, name="os", id=10, selection="cat_os", label="OS", tags={"os"})
add_category(config, name="ss", id=11, selection="cat_ss", label="SS", tags={"ss"})
add_category(config, name="iso", id=12, selection="cat_iso", label=r"$\tau_{h,2} iso$", tags={"iso"})
add_category(config, name="noniso", id=13, selection="cat_noniso", label=r"$\tau_{h,2} non-iso$", tags={"noniso"}) # noqa: E501

# kinematic categories
add_category(config, name="incl", id=100, selection="cat_incl", label="inclusive")
Expand Down Expand Up @@ -56,6 +57,12 @@ def kwargs_fn(categories, add_qcd_group=True):
"tags": set.union(*[cat.tags for cat in categories.values() if cat]),
# auxiliary information
"aux": aux,
# label
"label": ", ".join([
cat.label or cat.name
for cat in categories.values()
if cat.name != "os" # os is the default
]) or None,
}

# main analysis categories
Expand All @@ -70,15 +77,27 @@ def kwargs_fn(categories, add_qcd_group=True):
"sign": [config.get_category("os"), config.get_category("ss")],
"tau2": [config.get_category("iso"), config.get_category("noniso")],
}
create_category_combinations(config, main_categories, name_fn, kwargs_fn)
create_category_combinations(
config=config,
categories=main_categories,
name_fn=name_fn,
kwargs_fn=functools.partial(kwargs_fn, add_qcd_group=True),
)

# control categories
control_categories = {
# channels first
"channel": [config.get_category("mumu"), config.get_category("emu")],
"channel": [
config.get_category("ee"), config.get_category("mumu"), config.get_category("emu"),
],
# kinematic regions in the middle (to be extended)
"kin": [config.get_category("incl"), config.get_category("2j")],
# relative sign last
"sign": [config.get_category("os"), config.get_category("ss")],
"sign": [config.get_category("os")],
}
create_category_combinations(config, control_categories, name_fn, functools.partial(kwargs_fn, add_qcd_group=False))
create_category_combinations(
config=config,
categories=control_categories,
name_fn=name_fn,
kwargs_fn=functools.partial(kwargs_fn, add_qcd_group=False),
)
Loading

0 comments on commit 9bf8796

Please sign in to comment.