Skip to content

Commit

Permalink
bug fix: electron energy corrections only available for 2022
Browse files Browse the repository at this point in the history
  • Loading branch information
Philip Daniel Keicher committed Jan 24, 2025
1 parent b4e3a08 commit c0d4d07
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 39 deletions.
23 changes: 13 additions & 10 deletions hbt/calibration/default.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
)
from columnflow.util import maybe_import

from hbt.util import IF_RUN_2
from hbt.util import IF_RUN_2, IF_RUN_3_2022

ak = maybe_import("awkward")

Expand Down Expand Up @@ -64,16 +64,19 @@ def default(self: Calibrator, events: ak.Array, **kwargs) -> ak.Array:
# so if the global shift is not nominal, we are in the shifted case
# and will only execute something if it's data
if self.dataset_inst.is_data:
events = self[self.electron_scale_nominal_cls](events, **kwargs)
if self.has_dep(self.electron_scale_nominal_cls):
events = self[self.electron_scale_nominal_cls](events, **kwargs)
else:
events = self[self.electron_res_nominal_cls](events, **kwargs)
if self.has_dep(self.electron_res_nominal_cls):
events = self[self.electron_res_nominal_cls](events, **kwargs)
else:
events = self[self.jec_full_cls](events, **kwargs)
events = self[self.deterministic_jer_cls](events, **kwargs)
# in this block, we are in the nominal case in MC

events = self[self.electron_res_cls](events, **kwargs)
events = self[self.electron_scale_cls](events, **kwargs)
if self.has_dep(self.electron_res_cls):
events = self[self.electron_res_cls](events, **kwargs)
if self.has_dep(self.electron_scale_cls):
events = self[self.electron_scale_cls](events, **kwargs)

if self.config_inst.campaign.x.run == 2:
events = self[self.met_phi_cls](events, **kwargs)
Expand Down Expand Up @@ -164,10 +167,10 @@ def default_init(self: Calibrator) -> None:
self.tec_cls,
self.tec_nominal_cls,
IF_RUN_2(self.met_phi_cls),
self.electron_scale_cls,
self.electron_scale_nominal_cls,
self.electron_res_cls,
self.electron_res_nominal_cls,
IF_RUN_3_2022(self.electron_scale_cls),
IF_RUN_3_2022(self.electron_scale_nominal_cls),
IF_RUN_3_2022(self.electron_res_cls),
IF_RUN_3_2022(self.electron_res_nominal_cls),
}
self.uses |= derived_calibrators
self.produces |= derived_calibrators
52 changes: 26 additions & 26 deletions hbt/config/configs_hbt.py
Original file line number Diff line number Diff line change
Expand Up @@ -753,8 +753,6 @@ def if_not_era(*, values: list[str | None] | None = None, **kwargs) -> list[str]

# pec config
from columnflow.calibration.cms.egamma import EGammaCorrectionConfig
cfg.x.pec = EGammaCorrectionConfig(correction_set="Scale")
cfg.x.per = EGammaCorrectionConfig(correction_set="Smearing")

cfg.x.eec = EGammaCorrectionConfig(correction_set="Scale")
cfg.x.eer = EGammaCorrectionConfig(correction_set="Smearing")
Expand Down Expand Up @@ -1071,25 +1069,28 @@ def if_not_era(*, values: list[str | None] | None = None, **kwargs) -> list[str]
add_shift_aliases(cfg, "e", {"electron_weight": "electron_weight_{direction}"})

# electron shifts
cfg.add_shift(name="eec_up", id=92, type="shape", tags={"eec"})
cfg.add_shift(name="eec_down", id=93, type="shape", tags={"eec"})
add_shift_aliases(
cfg,
"eec",
{
"Electron.pt": "Electron.pt_scale_{direction}",
},
)
# TODO: energy corrections are currently only available for 2022 (Jan 2025)
# include them when available
if run == 3 and year == 2022:
cfg.add_shift(name="eec_up", id=92, type="shape", tags={"eec"})
cfg.add_shift(name="eec_down", id=93, type="shape", tags={"eec"})
add_shift_aliases(
cfg,
"eec",
{
"Electron.pt": "Electron.pt_scale_{direction}",
},
)

cfg.add_shift(name="eer_up", id=94, type="shape", tags={"eer"})
cfg.add_shift(name="eer_down", id=95, type="shape", tags={"eer"})
add_shift_aliases(
cfg,
"eer",
{
"Electron.pt": "Electron.pt_res_{direction}",
},
)
cfg.add_shift(name="eer_up", id=94, type="shape", tags={"eer"})
cfg.add_shift(name="eer_down", id=95, type="shape", tags={"eer"})
add_shift_aliases(
cfg,
"eer",
{
"Electron.pt": "Electron.pt_res_{direction}",
},
)

cfg.add_shift(name="mu_up", id=100, type="shape")
cfg.add_shift(name="mu_down", id=101, type="shape")
Expand Down Expand Up @@ -1215,13 +1216,12 @@ def add_external(name, value):
# electron scale factors
add_external("electron_sf", (f"{json_mirror}/POG/EGM/{json_pog_era}/electron.json.gz", "v1"))

# photon scale factors
add_external("photon_sf", (f"{json_mirror}/POG/EGM/{json_pog_era}/photon.json.gz", "v1"))
# electron energy correction and smearing
add_external("electron_ss", (f"{json_mirror}/POG/EGM/{json_pog_era}/electronSS.json.gz", "v1"))
# TODO: electron (and photon) energy corrections and smearing are only available for 2022
# include them when available
if year == 2022:
# electron energy correction and smearing
add_external("electron_ss", (f"{json_mirror}/POG/EGM/{json_pog_era}/electronSS.json.gz", "v1"))

# photon energy correction and smearing
add_external("photon_ss", (f"{json_mirror}/POG/EGM/{json_pog_era}/photonSS.json.gz", "v1"))
# tau energy correction and scale factors
# TODO: remove tag pog mirror once integrated centrally
json_mirror_tau_pog = "/afs/cern.ch/work/m/mrieger/public/mirrors/jsonpog-integration-taupog"
Expand Down
5 changes: 3 additions & 2 deletions hbt/selection/lepton.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,8 +159,9 @@ def electron_selection(
@electron_selection.init
def electron_selection_init(self) -> None:
from columnflow.config_util import get_shifts_from_sources
self.shifts.update(get_shifts_from_sources(self.config_inst, "eec"))
self.shifts.update(get_shifts_from_sources(self.config_inst, "eer"))
if self.config_inst.campaign.x.run == 3 and self.config_inst.campaign.x.year == 2022:
self.shifts.update(get_shifts_from_sources(self.config_inst, "eec"))
self.shifts.update(get_shifts_from_sources(self.config_inst, "eer"))


@selector(
Expand Down
5 changes: 5 additions & 0 deletions hbt/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,11 @@ def IF_RUN_3(self: ArrayFunction.DeferredColumn, func: ArrayFunction) -> Any | s
return self.get() if func.config_inst.campaign.x.run == 3 else None


@deferred_column
def IF_RUN_3_2022(self: ArrayFunction.DeferredColumn, func: ArrayFunction) -> Any | set[Any]:
return self.get() if (func.config_inst.campaign.x.run == 3 and func.config_inst.campaign.x.year == 2022) else None


@deferred_column
def IF_DATASET_HAS_LHE_WEIGHTS(
self: ArrayFunction.DeferredColumn,
Expand Down
2 changes: 1 addition & 1 deletion law_fs.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ base: /pnfs/desy.de/cms/tier2

[wlcg_fs]
base: &::wlcg_fs_desy::base
base_mkdir_rec: &::wlcg_fs_desy::gsiftp_base
base_mkdir_rec: &::wlcg_fs_desy::base
create_file_dir: True
use_cache: $CF_WLCG_USE_CACHE
cache_root: $CF_WLCG_CACHE_ROOT
Expand Down

0 comments on commit c0d4d07

Please sign in to comment.