Source code for higgs_dna.systematics.factories

from functools import partial
import logging
from .jet_systematics_json import jerc_jet

logger = logging.getLogger(__name__)


[docs]def add_jme_corr_syst(corrections_dict, systematics_dict, logger): corrections_dict.update( { # jerc for MC "jec_jet": partial(jerc_jet, pt=None, apply_jec=True), "jec_jet_syst": partial(jerc_jet, pt=None, apply_jec=True, jec_syst=True), "jec_jet_regrouped_syst": partial( jerc_jet, pt=None, apply_jec=True, jec_syst=True, split_jec_syst=True ), "jerc_jet": partial(jerc_jet, pt=None, apply_jec=True, apply_jer=True), "jerc_jet_syst": partial( jerc_jet, pt=None, apply_jec=True, jec_syst=True, apply_jer=True, jer_syst=True, ), "jerc_jet_regrouped_syst": partial( jerc_jet, pt=None, apply_jec=True, jec_syst=True, split_jec_syst=True, apply_jer=True, jer_syst=True, ), # jec for data: Usually corrections on Data innecessary # Use jec corrections with Era to re-do jec for data "jec_RunA": partial(jerc_jet, pt=None, era="RunA", level="L1L2L3Res"), "jec_RunB": partial(jerc_jet, pt=None, era="RunB", level="L1L2L3Res"), "jec_RunC": partial(jerc_jet, pt=None, era="RunC", level="L1L2L3Res"), "jec_RunD": partial(jerc_jet, pt=None, era="RunD", level="L1L2L3Res"), "jec_RunE": partial(jerc_jet, pt=None, era="RunE", level="L1L2L3Res"), "jec_RunF": partial(jerc_jet, pt=None, era="RunF", level="L1L2L3Res"), "jec_RunG": partial(jerc_jet, pt=None, era="RunG", level="L1L2L3Res"), "jec_RunH": partial(jerc_jet, pt=None, era="RunH", level="L1L2L3Res"), # For 2023 era C, different version of the datasets have different JECs # Details: https://gitlab.cern.ch/cms-analysis/general/HiggsDNA/-/issues/220#note_9180675 "jec_RunCv123": partial(jerc_jet, pt=None, era="RunCv123", level="L1L2L3Res"), "jec_RunCv4": partial(jerc_jet, pt=None, era="RunCv4", level="L1L2L3Res"), } ) logger.info( f"""_summary_ Available correction keys: {corrections_dict.keys()} Available systematic keys: {systematics_dict.keys()} """ ) return corrections_dict, systematics_dict