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_fatjet": partial(jerc_jet, pt=None, apply_jec=True, AK8=True), "jec_fatjet_syst": partial(jerc_jet, pt=None, apply_jec=True, jec_syst=True, AK8=True), "jec_jet_Run2_v15": partial(jerc_jet, pt=None, apply_jec=True, is_Run2_v15=True), "jec_jet_Run2_v15_syst": partial(jerc_jet, pt=None, apply_jec=True, jec_syst=True, is_Run2_v15=True), "jec_fatjet_Run2_v15": partial(jerc_jet, pt=None, apply_jec=True, AK8=True, is_Run2_v15=True), "jec_fatjet_Run2_v15_syst": partial(jerc_jet, pt=None, apply_jec=True, jec_syst=True, AK8=True, is_Run2_v15=True), "jec_jet_pnet": partial(jerc_jet, pt=None, apply_jec=True, reg="PNetRegression"), "jec_jet_pnetNu": partial(jerc_jet, pt=None, apply_jec=True, reg="PNetRegressionPlusNeutrino"), "jec_jet_pnet_syst": partial(jerc_jet, pt=None, apply_jec=True, jec_syst=True, reg="PNetRegression"), "jec_jet_pnetNu_syst": partial(jerc_jet, pt=None, apply_jec=True, jec_syst=True, reg="PNetRegressionPlusNeutrino"), "jec_jet_upart": partial(jerc_jet, pt=None, apply_jec=True, reg="UParTRegression"), "jec_jet_upartNu": partial(jerc_jet, pt=None, apply_jec=True, reg="UParTRegressionPlusNeutrino"), "jec_jet_upart_syst": partial(jerc_jet, pt=None, apply_jec=True, jec_syst=True, reg="UParTRegression"), "jec_jet_upartNu_syst": partial(jerc_jet, pt=None, apply_jec=True, jec_syst=True, reg="UParTRegressionPlusNeutrino"), "jec_jet_regrouped_syst": partial( jerc_jet, pt=None, apply_jec=True, jec_syst=True, split_jec_syst="regrouped" ), "jec_jet_full_syst": partial( jerc_jet, pt=None, apply_jec=True, jec_syst=True, split_jec_syst="full" ), "jec_fatjet_regrouped_syst": partial( jerc_jet, pt=None, apply_jec=True, jec_syst=True, split_jec_syst="regrouped", AK8=True ), "jec_fatjet_full_syst": partial( jerc_jet, pt=None, apply_jec=True, jec_syst=True, split_jec_syst="full", AK8=True ), "jerc_jet": partial(jerc_jet, pt=None, apply_jec=True, apply_jer=True), "jerc_fatjet": partial(jerc_jet, pt=None, apply_jec=True, apply_jer=True, AK8=True), "jerc_jet_Run2_v15": partial(jerc_jet, pt=None, apply_jec=True, apply_jer=True, is_Run2_v15=True), "jerc_fatjet_Run2_v15": partial(jerc_jet, pt=None, apply_jec=True, apply_jer=True, AK8=True, is_Run2_v15=True), "jerc_jet_pnet": partial(jerc_jet, pt=None, apply_jec=True, apply_jer=True, reg="PNetRegression"), "jerc_jet_pnetNu": partial(jerc_jet, pt=None, apply_jec=True, apply_jer=True, reg="PNetRegressionPlusNeutrino"), "jerc_jet_upart": partial(jerc_jet, pt=None, apply_jec=True, apply_jer=True, reg="UParTRegression"), "jerc_jet_upartNu": partial(jerc_jet, pt=None, apply_jec=True, apply_jer=True, reg="UParTRegressionPlusNeutrino"), "jerc_jet_syst": partial( jerc_jet, pt=None, apply_jec=True, jec_syst=True, apply_jer=True, jer_syst=True, ), "jerc_jet_Run2_v15_syst": partial( jerc_jet, pt=None, apply_jec=True, jec_syst=True, apply_jer=True, jer_syst=True, is_Run2_v15=True ), "jerc_fatjet_syst": partial( jerc_jet, pt=None, apply_jec=True, jec_syst=True, apply_jer=True, jer_syst=True, AK8=True, ), "jerc_fatjet_Run2_v15_syst": partial( jerc_jet, pt=None, apply_jec=True, jec_syst=True, apply_jer=True, jer_syst=True, AK8=True, is_Run2_v15=True ), "jerc_jet_pnet_syst": partial( jerc_jet, pt=None, apply_jec=True, jec_syst=True, apply_jer=True, jer_syst=True, reg="PNetRegression", ), "jerc_jet_pnetNu_syst": partial( jerc_jet, pt=None, apply_jec=True, jec_syst=True, apply_jer=True, jer_syst=True, reg="PNetRegressionPlusNeutrino", ), "jerc_jet_upart_syst": partial( jerc_jet, pt=None, apply_jec=True, jec_syst=True, apply_jer=True, jer_syst=True, reg="UParTRegression", ), "jerc_jet_upartNu_syst": partial( jerc_jet, pt=None, apply_jec=True, jec_syst=True, apply_jer=True, jer_syst=True, reg="UParTRegressionPlusNeutrino", ), "jerc_jet_regrouped_syst": partial( jerc_jet, pt=None, apply_jec=True, jec_syst=True, split_jec_syst="regrouped", apply_jer=True, jer_syst=True, ), "jerc_fatjet_regrouped_syst": partial( jerc_jet, pt=None, apply_jec=True, jec_syst=True, split_jec_syst="regrouped", apply_jer=True, jer_syst=True, AK8=True, ), "jerc_jet_full_syst": partial( jerc_jet, pt=None, apply_jec=True, jec_syst=True, split_jec_syst="full", apply_jer=True, jer_syst=True, ), "jerc_fatjet_full_syst": partial( jerc_jet, pt=None, apply_jec=True, jec_syst=True, split_jec_syst="full", apply_jer=True, jer_syst=True, AK8=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_Run2_v15_RunA": partial(jerc_jet, pt=None, era="RunA", level="L1L2L3Res", is_Run2_v15=True), "jec_AK8_RunA": partial(jerc_jet, pt=None, era="RunA", level="L1L2L3Res", AK8=True), "jec_AK8_Run2_v15_RunA": partial(jerc_jet, pt=None, era="RunA", level="L1L2L3Res", AK8=True, is_Run2_v15=True), "jec_pnet_RunA": partial(jerc_jet, pt=None, era="RunA", level="L1L2L3Res", reg="PNetRegression"), "jec_pnetNu_RunA": partial(jerc_jet, pt=None, era="RunA", level="L1L2L3Res", reg="PNetRegressionPlusNeutrino"), "jec_RunB": partial(jerc_jet, pt=None, era="RunB", level="L1L2L3Res"), "jec_Run2_v15_RunB": partial(jerc_jet, pt=None, era="RunB", level="L1L2L3Res", is_Run2_v15=True), "jec_AK8_RunB": partial(jerc_jet, pt=None, era="RunB", level="L1L2L3Res", AK8=True), "jec_AK8_Run2_v15_RunB": partial(jerc_jet, pt=None, era="RunB", level="L1L2L3Res", AK8=True, is_Run2_v15=True), "jec_pnet_RunB": partial(jerc_jet, pt=None, era="RunB", level="L1L2L3Res", reg="PNetRegression"), "jec_pnetNu_RunB": partial(jerc_jet, pt=None, era="RunB", level="L1L2L3Res", reg="PNetRegressionPlusNeutrino"), "jec_RunC": partial(jerc_jet, pt=None, era="RunC", level="L1L2L3Res"), "jec_Run2_v15_RunC": partial(jerc_jet, pt=None, era="RunC", level="L1L2L3Res", is_Run2_v15=True), "jec_AK8_RunC": partial(jerc_jet, pt=None, era="RunC", level="L1L2L3Res", AK8=True), "jec_AK8_Run2_v15_RunC": partial(jerc_jet, pt=None, era="RunC", level="L1L2L3Res", AK8=True, is_Run2_v15=True), "jec_pnet_RunC": partial(jerc_jet, pt=None, era="RunC", level="L1L2L3Res", reg="PNetRegression"), "jec_pnetNu_RunC": partial(jerc_jet, pt=None, era="RunC", level="L1L2L3Res", reg="PNetRegressionPlusNeutrino"), "jec_RunD": partial(jerc_jet, pt=None, era="RunD", level="L1L2L3Res"), "jec_Run2_v15_RunD": partial(jerc_jet, pt=None, era="RunD", level="L1L2L3Res", is_Run2_v15=True), "jec_AK8_RunD": partial(jerc_jet, pt=None, era="RunD", level="L1L2L3Res", AK8=True), "jec_AK8_Run2_v15_RunD": partial(jerc_jet, pt=None, era="RunD", level="L1L2L3Res", AK8=True, is_Run2_v15=True), "jec_pnet_RunD": partial(jerc_jet, pt=None, era="RunD", level="L1L2L3Res", reg="PNetRegression"), "jec_pnetNu_RunD": partial(jerc_jet, pt=None, era="RunD", level="L1L2L3Res", reg="PNetRegressionPlusNeutrino"), "jec_RunE": partial(jerc_jet, pt=None, era="RunE", level="L1L2L3Res"), "jec_Run2_v15_RunE": partial(jerc_jet, pt=None, era="RunE", level="L1L2L3Res", is_Run2_v15=True), "jec_AK8_RunE": partial(jerc_jet, pt=None, era="RunE", level="L1L2L3Res", AK8=True), "jec_AK8_Run2_v15_RunE": partial(jerc_jet, pt=None, era="RunE", level="L1L2L3Res", AK8=True, is_Run2_v15=True), "jec_pnet_RunE": partial(jerc_jet, pt=None, era="RunE", level="L1L2L3Res", reg="PNetRegression"), "jec_pnetNu_RunE": partial(jerc_jet, pt=None, era="RunE", level="L1L2L3Res", reg="PNetRegressionPlusNeutrino"), "jec_RunF": partial(jerc_jet, pt=None, era="RunF", level="L1L2L3Res"), "jec_Run2_v15_RunF": partial(jerc_jet, pt=None, era="RunF", level="L1L2L3Res", is_Run2_v15=True), "jec_AK8_RunF": partial(jerc_jet, pt=None, era="RunF", level="L1L2L3Res", AK8=True), "jec_AK8_Run2_v15_RunF": partial(jerc_jet, pt=None, era="RunF", level="L1L2L3Res", AK8=True), "jec_pnet_RunF": partial(jerc_jet, pt=None, era="RunF", level="L1L2L3Res", reg="PNetRegression"), "jec_pnetNu_RunF": partial(jerc_jet, pt=None, era="RunF", level="L1L2L3Res", reg="PNetRegressionPlusNeutrino"), "jec_RunG": partial(jerc_jet, pt=None, era="RunG", level="L1L2L3Res"), "jec_Run2_v15_RunG": partial(jerc_jet, pt=None, era="RunG", level="L1L2L3Res", is_Run2_v15=True), "jec_AK8_RunG": partial(jerc_jet, pt=None, era="RunG", level="L1L2L3Res", AK8=True), "jec_AK8_Run2_v15_RunG": partial(jerc_jet, pt=None, era="RunG", level="L1L2L3Res", AK8=True), "jec_pnet_RunG": partial(jerc_jet, pt=None, era="RunG", level="L1L2L3Res", reg="PNetRegression"), "jec_pnetNu_RunG": partial(jerc_jet, pt=None, era="RunG", level="L1L2L3Res", reg="PNetRegressionPlusNeutrino"), "jec_RunH": partial(jerc_jet, pt=None, era="RunH", level="L1L2L3Res"), "jec_Run2_v15_RunH": partial(jerc_jet, pt=None, era="RunH", level="L1L2L3Res", is_Run2_v15=True), "jec_AK8_RunH": partial(jerc_jet, pt=None, era="RunH", level="L1L2L3Res", AK8=True), "jec_AK8_Run2_v15_RunH": partial(jerc_jet, pt=None, era="RunH", level="L1L2L3Res", AK8=True, is_Run2_v15=True), "jec_pnet_RunH": partial(jerc_jet, pt=None, era="RunH", level="L1L2L3Res", reg="PNetRegression"), "jec_pnetNu_RunH": partial(jerc_jet, pt=None, era="RunH", level="L1L2L3Res", reg="PNetRegressionPlusNeutrino"), # For 2023, the correct era is chosen based on the run the event is in (except for PNetRegression and PNetRegressionPlusNeutrino) # Details: https://gitlab.cern.ch/cms-nanoAOD/jsonpog-integration/-/merge_requests/118 "jec_Data2023": partial(jerc_jet, pt=None, era="Data", level="L1L2L3Res"), "jec_AK8_Data2023": partial(jerc_jet, pt=None, era="Data", level="L1L2L3Res", AK8=True), "jec_pnet_RunCv123": partial(jerc_jet, pt=None, era="RunCv123", level="L1L2L3Res", reg="PNetRegression"), "jec_pnetNu_RunCv123": partial(jerc_jet, pt=None, era="RunCv123", level="L1L2L3Res", reg="PNetRegressionPlusNeutrino"), "jec_pnet_RunCv4": partial(jerc_jet, pt=None, era="RunCv4", level="L1L2L3Res", reg="PNetRegression"), "jec_pnetNu_RunCv4": partial(jerc_jet, pt=None, era="RunCv4", level="L1L2L3Res", reg="PNetRegressionPlusNeutrino"), "jec_Data2024": partial(jerc_jet, pt=None, era="Data", level="L1L2L3Res"), "jec_Data2024_clipping": partial(jerc_jet, pt=None, era="Data", level="L1L2L3Res", clipping_24=True), "jec_AK8_Data2024": partial(jerc_jet, pt=None, era="Data", level="L1L2L3Res", AK8=True), # "jec_pnet_Data2024": partial(jerc_jet, pt=None, era="Data", level="L1L2L3Res", reg="PNetRegression"), # "jec_pnetNu_Data2024": partial(jerc_jet, pt=None, era="Data", level="L1L2L3Res", reg="PNetRegressionPlusNeutrino"), # "jec_upart_Data2024": partial(jerc_jet, pt=None, era="Data", level="L1L2L3Res", reg="UParTRegression"), # "jec_upartNu_Data2024": partial(jerc_jet, pt=None, era="Data", level="L1L2L3Res", reg="UParTRegressionPlusNeutrino"), "jec_Data2025": partial(jerc_jet, pt=None, era="Data", level="L1L2L3Res"), "jec_AK8_Data2025": partial(jerc_jet, pt=None, era="Data", level="L1L2L3Res", AK8=True), # "jec_pnet_Data2025": partial(jerc_jet, pt=None, era="Data", level="L1L2L3Res", reg="PNetRegression"), # "jec_pnetNu_Data2025": partial(jerc_jet, pt=None, era="Data", level="L1L2L3Res", reg="PNetRegressionPlusNeutrino"), # "jec_upart_Data2025": partial(jerc_jet, pt=None, era="Data", level="L1L2L3Res", reg="UParTRegression"), # "jec_upartNu_Data2025": partial(jerc_jet, pt=None, era="Data", level="L1L2L3Res", reg="UParTRegressionPlusNeutrino"), } ) logger.info( f"""_summary_ Available correction keys: {corrections_dict.keys()} Available systematic keys: {systematics_dict.keys()} """ ) return corrections_dict, systematics_dict