Skip to content

Commit

Permalink
Merge pull request #87 from uhh-cms/analysis_update
Browse files Browse the repository at this point in the history
Analysis update
  • Loading branch information
mafrahm authored Oct 16, 2024
2 parents 02b239c + 51c3bc2 commit 5bdc171
Show file tree
Hide file tree
Showing 37 changed files with 856 additions and 1,262 deletions.
2 changes: 1 addition & 1 deletion hbw/analysis/create_analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ def create_hbw_analysis(

# cmssw sandboxes that should be bundled for remote jobs in case they are needed
analysis_inst.set_aux("cmssw_sandboxes", [
# "$CF_BASE/sandboxes/cmssw_default.sh",
"$CF_BASE/sandboxes/cmssw_default.sh",
])

# clear the list when cmssw bundling is disabled
Expand Down
7 changes: 3 additions & 4 deletions hbw/categorization/categories.py
Original file line number Diff line number Diff line change
Expand Up @@ -269,11 +269,10 @@ def catid_2b(self: Categorizer, events: ak.Array, **kwargs) -> tuple[ak.Array, a

# TODO: not hard-coded -> use config?
ml_processes = [
"hh_ggf_hbb_hvv_kl1_kt1", "hh_vbf_hbb_hvv_kv1_k2v1_kl1",
"hh_ggf_hbb_hvvqqlnu_kl1_kt1", "hh_vbf_hbb_hvvqqlnu_kv1_k2v1_kl1",
"tt", "st", "w_lnu", "dy", "v_lep",
"hh_ggf_hbb_hvv2l2nu_kl1_kt1", "t_bkg", "sig",
"graviton_hh_ggf_bbww_m250", "graviton_hh_ggf_bbww_m350", "graviton_hh_ggf_bbww_m450",
"graviton_hh_ggf_bbww_m600", "graviton_hh_ggf_bbww_m750", "graviton_hh_ggf_bbww_m1000",
"hh_ggf_hbb_hvv2l2nu_kl1_kt1", "hh_vbf_hbb_hvv2l2nu_kv1_k2v1_kl1",
"tt", "st", "w_lnu", "dy", "v_lep", "h",
]
for proc in ml_processes:
@categorizer(
Expand Down
28 changes: 9 additions & 19 deletions hbw/config/categories.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,13 +121,13 @@ def add_mll_categories(config: od.Config) -> None:
name="dycr",
id=3,
selection="catid_mll_z",
label=r"81 \leq m_{\ell\ell} < 101",
# label=r"81 \leq m_{\ell\ell} < 101",
)
cr.add_category(
name="ttcr",
id=4,
selection="catid_mll_high",
label=r"m_{\ell\ell} \geq 101",
# label=r"m_{\ell\ell} \geq 101",
)


Expand Down Expand Up @@ -305,25 +305,11 @@ def add_categories_production(config: od.Config) -> None:
def add_categories_ml(config, ml_model_inst):
if config.has_tag("add_categories_production_called"):
raise Exception("We should not call *add_categories_production* when also building ML categories")

#
# prepare non-ml categories
#

cat_1e = config.get_category("1e")
cat_1e.selection = "catid_1e"

cat_1mu = config.get_category("1mu")
cat_1mu.selection = "catid_1mu"

cat_2e = config.get_category("2e")
cat_2e.selection = "catid_2e"

cat_2mu = config.get_category("2mu")
cat_2mu.selection = "catid_2mu"

cat_emu = config.get_category("emu")
cat_emu.selection = "catid_emu"

add_jet_categories(config)

#
Expand All @@ -339,13 +325,15 @@ def add_categories_ml(config, ml_model_inst):
# we can reconfigure our MLModel after having created these categories
ml_categories = []
for i, proc in enumerate(ml_model_inst.processes):
cat_label = config.get_process(proc).x.ml_label
ml_categories.append(config.add_category(
# NOTE: name and ID is unique as long as we don't use
# multiple ml_models simutaneously
name=f"ml_{proc}",
id=(i + 1) * 1000,
selection=f"catid_ml_{proc}",
label=f"ml_{proc}",
label=f"{cat_label} category",
aux={"ml_proc": proc},
))

#
Expand All @@ -354,7 +342,9 @@ def add_categories_ml(config, ml_model_inst):

# NOTE: building this many categories takes forever: has to be improved...
category_blocks = OrderedDict({
"main": [config.get_category(cat) for cat in config.x.main_categories],
# NOTE: when building DNN categories, we do not need the control regions
"main": [config.get_category("sr")],
# "main": [config.get_category(cat) for cat in config.x.main_categories],
# "lepid": [config.get_category("sr"), config.get_category("fake")],
# "met": [config.get_category("highmet"), config.get_category("lowmet")],
"lep": [config.get_category(lep_ch) for lep_ch in config.x.lepton_channels],
Expand Down
6 changes: 5 additions & 1 deletion hbw/config/config_run2.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
from hbw.config.datasets import add_hbw_processes_and_datasets, configure_hbw_datasets
from hbw.config.processes import configure_hbw_processes
from hbw.config.defaults_and_groups import set_config_defaults_and_groups
from hbw.config.hist_hooks import add_hist_hooks
from hbw.util import timeit_multiple

thisdir = os.path.dirname(os.path.abspath(__file__))
Expand Down Expand Up @@ -678,7 +679,7 @@ def add_external(name, value):
# FatJets
"{FatJet,HbbJet}.{pt,eta,phi,mass,msoftdrop,tau1,tau2,tau3,btagHbb,deepTagMD_HbbvsQCD,particleNet_HbbvsQCD}",
# Leptons
"{Electron,Muon}.{pt,eta,phi,mass,charge,pdgId,jetRelIso,is_tight}",
"{Electron,Muon}.{pt,eta,phi,mass,charge,pdgId,jetRelIso,is_tight,dxy,dz}",
"Electron.deltaEtaSC", "mll",
# MET
"MET.{pt,phi}",
Expand All @@ -698,6 +699,9 @@ def add_external(name, value):
# add variables
add_variables(cfg)

# add hist hooks
add_hist_hooks(cfg)

# set some config defaults and groups
# TODO: it might make sense to completely separate this for SL/DL
set_config_defaults_and_groups(cfg)
Expand Down
18 changes: 7 additions & 11 deletions hbw/config/datasets.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,16 +35,15 @@ def hbw_dataset_names(config: od.Config, as_list: bool = False) -> DotDict[str:
"2022postEE": "efg",
}[config.x.cpn_tag]

data_datasets = {
f"data_{stream}": [
f"data_{stream}_{era}"
for era in data_eras
]
data_datasets = [
f"data_{stream}_{era}"
for era in data_eras
for stream in config.x.data_streams
}
]

dataset_names = DotDict.wrap({
**data_datasets,
# **data_datasets,
"data": data_datasets,
"tt": ["tt_sl_powheg", "tt_dl_powheg", "tt_fh_powheg"],
"st": [
# "st_schannel_lep_4f_amcatnlo",
Expand Down Expand Up @@ -287,7 +286,7 @@ def get_dataset_names_for_config(config: od.Config, as_list: bool = False):
get all relevant dataset names and modify them based on the config and campaign
"""

dataset_names = hbw_dataset_names(config)
config.x.dataset_names = dataset_names = hbw_dataset_names(config)

# optionally switch to custom signal processes (only implemented for hh_ggf_sl)
if config.has_tag("custom_signals"):
Expand Down Expand Up @@ -350,9 +349,6 @@ def add_hbw_processes_and_datasets(config: od.Config, campaign: od.Campaign):
# get all root processes
config.x.procs = procs = get_root_processes_from_campaign(campaign)

# processes only for the config
config.add_process(procs.n.data)

# add processes to config
for proc_name in process_names:
config.add_process(procs.n(proc_name))
Expand Down
115 changes: 79 additions & 36 deletions hbw/config/defaults_and_groups.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ def default_producers(cls, container, task_params):

if hasattr(cls, "ml_model"):
# do no further resolve the ML categorizer when this task is part of the MLTraining pipeline
default_producers.remove("pre_ml_cats")
return default_producers

# check if a mlmodel has been set
Expand Down Expand Up @@ -113,6 +114,7 @@ def set_config_defaults_and_groups(config_inst):
config_inst.x.ml_inputs_producer = ml_inputs_producer(config_inst)
config_inst.x.default_producer = default_producers
config_inst.x.default_weight_producer = "default"
# config_inst.x.default_weight_producer = "btag_not_normalized"
config_inst.x.default_ml_model = default_ml_model
config_inst.x.default_inference_model = "default" if year == 2017 else "sl_22"
config_inst.x.default_categories = ["incl"]
Expand All @@ -126,13 +128,22 @@ def set_config_defaults_and_groups(config_inst):
# (used in wrapper_factory and during plotting)
config_inst.x.process_groups = {
"all": ["*"],
"default": [default_signal_process, "tt", "st", "w_lnu", "dy"],
"with_qcd": [default_signal_process, "tt", "qcd", "st", "w_lnu", "dy"],
"much": [default_signal_process, "tt", "qcd_mu", "st", "w_lnu", "dy"],
"2much": [default_signal_process, "tt", "dy", "st", "w_lnu", "h"],
"ech": [default_signal_process, "tt", "dy", "qcd_ele", "st", "w_lnu", "h"],
"2ech": [default_signal_process, "tt", "dy", "st", "w_lnu", "h"],
"emuch": [default_signal_process, "tt", "st", "w_lnu", "dy"],
"default": ["hh_ggf_hbb_hvv_kl1_kt1", "hh_vbf_hbb_hvv_kv1_k2v1_kl1", "tt", "dy", "st", "vv", "w_lnu", "h"], # noqa: E501
"sl": ["hh_ggf_hbb_hvv_kl1_kt1", "hh_vbf_hbb_hvv_kv1_k2v1_kl1", "tt", "qcd", "st", "dy", "vv", "w_lnu", "h"], # noqa: E501
"much": ["hh_ggf_hbb_hvv_kl1_kt1", "hh_vbf_hbb_hvv_kv1_k2v1_kl1", "tt", "qcd", "st", "dy", "vv", "w_lnu", "h"], # noqa: E501
"ech": ["hh_ggf_hbb_hvv_kl1_kt1", "hh_vbf_hbb_hvv_kv1_k2v1_kl1", "tt", "qcd", "st", "dy", "vv", "w_lnu", "h"], # noqa: E501
"dl": ["hh_ggf_hbb_hvv_kl1_kt1", "hh_vbf_hbb_hvv_kv1_k2v1_kl1", "tt", "dy", "st", "vv", "w_lnu", "h"], # noqa: E501
"dl1": [default_signal_process, "tt", "dy", "st", "vv", "w_lnu", "h"],
"dl2": [default_signal_process, "tt", "dy_m4to10", "dy_m10to50", "dy_m50toinf", "st", "vv", "w_lnu", "h"], # noqa: E501
"dlbkg": ["tt", "dy_m4to10", "dy_m10to50", "dy_m50toinf", "st", "vv", "w_lnu", "h"],
"dlmajor": [default_signal_process, "tt", "dy", "st"],
"2much": [default_signal_process, "tt", "dy_m4to10", "dy_m10to50", "dy_m50toinf", "st", "vv", "w_lnu", "h"],
"2ech": [default_signal_process, "tt", "dy_m4to10", "dy_m10to50", "dy_m50toinf", "st", "vv", "w_lnu", "h"],
"emuch": [default_signal_process, "tt", "dy_m4to10", "dy_m10to50", "dy_m50toinf", "st", "vv", "w_lnu", "h"],
# "dl": [default_signal_process, "tt", "dy", "st", "vv", "w_lnu", "h"],
# "2much": [default_signal_process, "tt", "dy", "st", "vv", "w_lnu", "h"],
# "2ech": [default_signal_process, "tt", "dy", "st", "vv", "w_lnu", "h"],
# "emuch": [default_signal_process, "tt", "dy", "st", "vv", "w_lnu", "h"],
"inference": ["hh_ggf_*", "tt", "st", "w_lnu", "dy", "qcd_*"],
"k2v": ["hh_vbf_*", "tt", "st", "w_lnu", "dy", "qcd_*"],
"ml": [default_signal_process, "tt", "st", "w_lnu", "dy"],
Expand All @@ -142,6 +153,7 @@ def set_config_defaults_and_groups(config_inst):
"test": [default_signal_process, "tt_sl"],
"small": [default_signal_process, "tt", "st"],
"bkg": ["tt", "st", "w_lnu", "dy"],
# signal groups
"signal": ["hh_ggf_*", "hh_vbf_*"],
"hbv": ["hh_ggf_hbb_hvv_kl1_kt1", "hh_vbf_hbb_hvv_kv1_k2v1_kl1"],
"hbw": ["hh_ggf_hbb_hww_kl1_kt1", "hh_vbf_hbb_hww_kv1_k2v1_kl1"],
Expand All @@ -161,11 +173,19 @@ def set_config_defaults_and_groups(config_inst):
"hbz_ggf_sl": ["hh_ggf_hbb_hzzqqlnu_kl*_kt1"],
"hbz_vbf_dl": ["hh_vbf_hbb_hzz2l2nu_*"],
"hbz_vbf_sl": ["hh_vbf_hbb_hzzqqlnu_*"],
# background groups (separated for plotting)
"dy_m": ["dy_m4to10", "dy_m10to50", "dy_m50toinf"],
# background groups (for yield tables)
"dy_all": ["dy", "dy_m4to10", "dy_m10to50", "dy_m50toinf", "dy_m50toinf_0j", "dy_m50toinf_1j", "dy_m50toinf_2j"], # noqa: E501
"tt_all": ["tt", "tt_dl", "tt_sl", "tt_fh"],
"st_all": ["st", "st_schannel", "st_tchannel", "st_twchannel"],
"h_all": ["h", "h_ggf", "h_vbf", "vh", "zh", "zh_gg", "wh", "tth", "ttvh"],
}
for group in ("much", "2much", "ech", "2ech", "emuch"):
for proc, datasets in config_inst.x.dataset_names.items():
remove_generator = lambda x: x.replace("_powheg", "").replace("_madgraph", "").replace("_amcatnlo", "").replace("_pythia8", "").replace("4f_", "") # noqa: E501
config_inst.x.process_groups[f"datasets_{proc}"] = [remove_generator(dataset) for dataset in datasets]

for group in ("dl2", "dl1", "dl", "much", "2much", "ech", "2ech", "emuch"):
# thanks to double counting removal, we can (and should) now use all datasets in each channel
config_inst.x.process_groups[f"d{group}"] = ["data"] + config_inst.x.process_groups[group]

Expand All @@ -183,6 +203,7 @@ def set_config_defaults_and_groups(config_inst):
"signal": ["hh_ggf_*", "hh_vbf_*"], "hh_ggf": ["hh_ggf_*"], "hh_vbf": ["hh_vbf_*"],
"ml": ["hh_ggf*kl1_kt1", "tt_*", "st_*", "dy_*", "w_lnu_*"],
"dilep": ["tt_*", "st_*", "dy_*", "w_lnu_*", "hh_ggf_*"],
"h": ["h_ggf_*", "h_vbf_*", "zh_*", "wph_*", "wmh_*", "tth_*", "ttzh_*", "ttwh_*"],
}

# category groups for conveniently looping over certain categories
Expand All @@ -196,11 +217,14 @@ def set_config_defaults_and_groups(config_inst):
"sl_ech_resolved": ["sr__1e__resolved", "sr__1e__resolved__1b", "sr__1e__resolved__2b"],
"sl_much_boosted": ["sr__1mu__boosted"],
"sl_ech_boosted": ["sr__1e__boosted"],
"dl": ["sr__2e", "sr__2mu", "sr__emu"],
"dl_resolved": ["sr__2e__resolved", "sr__2mu__resolved", "sr__emu__resolved"],
"dl_2much": ["sr__2mu", "sr__2mu__1b", "sr__2mu__2b"],
"dl_2ech": ["sr__2e", "sr__2e__1b", "sr__2e__2b"],
"dl_emuch": ["sr__emu", "sr__emu__1b", "sr__emu__2b"],
"dl": ["sr", "dycr", "ttcr", "sr__1b", "sr__2b", "dycr__1b", "dycr__2b", "ttcr__1b", "ttcr__2b"],
"dl_ttcr": ["ttcr", "ttcr__1b", "ttcr__2b", "ttcr__2e", "ttcr__2mu", "ttcr__emu"],
"dl_dycr": ["dycr", "dycr__1b", "dycr__2b", "dycr__2e", "dycr__2mu", "dycr__emu"],
"dl_sr": ["sr", "sr__1b", "sr__2b", "sr__2e", "sr__2mu", "sr__emu"],
"dl_resolved": ["sr__resolved", "sr__2e__resolved", "sr__2mu__resolved", "sr__emu__resolved"],
"dl_2much": ["sr__2mu", "sr__2mu__1b", "sr__2mu__2b", "dycr__2mu", "dycr__2mu__1b", "dycr__2mu__2b", "ttcr__2mu", "ttcr__2mu__1b", "ttcr__2mu__2b"], # noqa: E501
"dl_2ech": ["sr__2e", "sr__2e__1b", "sr__2e__2b", "dycr__2e", "dycr__2e__1b", "dycr__2e__2b", "ttcr__2e", "ttcr__2e__1b", "ttcr__2e__2b"], # noqa: E501
"dl_emuch": ["sr__emu", "sr__emu__1b", "sr__emu__2b", "dycr__emu", "dycr__emu__1b", "dycr__emu__2b", "ttcr__emu", "ttcr__emu__1b", "ttcr__emu__2b"], # noqa: E501
"dl_2much_resolved": ["sr__2mu__resolved", "sr__2mu__resolved__1b", "sr__2mu__resolved__2b"],
"dl_2ech_resolved": ["sr__2e__resolved", "sr__2e__resolved__1b", "sr__2e__resolved__2b"],
"dl_emuch_resolved": ["sr__emu__resolved", "sr__emu__resolved__1b", "sr__emu__resolved__2b"],
Expand Down Expand Up @@ -244,26 +268,34 @@ def set_config_defaults_and_groups(config_inst):
),
# Dilepton
"SR_dl": (
"sr__2e__1b__ml_hh_ggf_hbb_hvv2l2nu_kl1_kt1", "sr__2e__2b__ml_hh_ggf_hbb_hvv2l2nu_kl1_kt1",
"sr__1b__ml_hh_ggf_hbb_hvv2l2nu_kl1_kt1", "sr__2b__ml_hh_ggf_hbb_hvv2l2nu_kl1_kt1",
"sr__2mu__1b__ml_hh_ggf_hbb_hvv2l2nu_kl1_kt1", "sr__2mu__2b__ml_hh_ggf_hbb_hvv2l2nu_kl1_kt1",
"sr__2e__1b__ml_hh_ggf_hbb_hvv2l2nu_kl1_kt1", "sr__2e__2b__ml_hh_ggf_hbb_hvv2l2nu_kl1_kt1",
"sr__emu__1b__ml_hh_ggf_hbb_hvv2l2nu_kl1_kt1", "sr__emu__2b__ml_hh_ggf_hbb_hvv2l2nu_kl1_kt1",
),
"vbfSR_dl": (
"sr__1b__ml_hh_vbf_hbb_hvv2l2nu_kv1_k2v1_kl1", "sr__2b__ml_hh_vbf_hbb_hvv2l2nu_kv1_k2v1_kl1",
"sr__2mu__1b__ml_hh_vbf_hbb_hvv2l2nu_kv1_k2v1_kl1", "sr__2mu__2b__ml_hh_vbf_hbb_hvv2l2nu_kv1_k2v1_kl1",
"sr__2e__1b__ml_hh_vbf_hbb_hvv2l2nu_kv1_k2v1_kl1", "sr__2e__2b__ml_hh_vbf_hbb_hvv2l2nu_kv1_k2v1_kl1",
"sr__emu__1b__ml_hh_vbf_hbb_hvv2l2nu_kv1_k2v1_kl1", "sr__emu__2b__ml_hh_vbf_hbb_hvv2l2nu_kv1_k2v1_kl1",
),
"BR_dl": (
"sr__2e__ml_tt", "sr__2e__ml_st", "sr__2e__ml_dy",
"sr__2mu__ml_tt", "sr__2mu__ml_st", "sr__2mu__ml_dy",
"sr__emu__ml_tt", "sr__emu__ml_st", "sr__emu__ml_dy",
"sr__1b__ml_tt", "sr__1b__ml_st", "sr__1b__ml_dy", "sr__1b__ml_h",
"sr__2b__ml_tt", "sr__2b__ml_st", "sr__2b__ml_dy", "sr__2b__ml_h",
"sr__ml_tt", "sr__ml_st", "sr__ml_dy", "sr__ml_h",
),
}

# variable groups for conveniently looping over certain variables
# (used during plotting)
config_inst.x.variable_groups = {
"mli": ["mli_*"],
"sl": ["n_*", "electron_*", "muon_*", "met_*", "jet*", "bjet*", "ht"],
"sl_resolved": ["n_*", "electron_*", "muon_*", "met_*", "jet*", "bjet*", "ht"],
"sl_boosted": ["n_*", "electron_*", "muon_*", "met_*", "fatjet_*"],
"dl": ["n_*", "electron_*", "muon_*", "met_*", "jet*", "bjet*", "ht", "lt", "mll"],
"dl_resolved": ["n_*", "electron_*", "muon_*", "met_*", "jet*", "bjet*", "ht", "lt", "mll"],
"dl_boosted": ["n_*", "electron_*", "muon_*", "met_*", "fatjet_*", "lt", "mll"],
"dl": ["n_*", "electron_*", "muon_*", "met_*", "jet*", "bjet*", "ht", "lt", "mll", "ptll"],
"dl_resolved": ["n_*", "electron_*", "muon_*", "met_*", "jet*", "bjet*", "ht", "lt", "mll", "ptll"],
"dl_boosted": ["n_*", "electron_*", "muon_*", "met_*", "fatjet_*", "lt", "mll", "ptll"],
"default": ["n_jet", "n_muon", "n_electron", "ht", "m_bb", "deltaR_bb", "jet1_pt"], # n_deepjet, ....
"test": ["n_jet", "n_electron", "jet1_pt"],
"cutflow": ["cf_jet1_pt", "cf_jet4_pt", "cf_n_jet", "cf_n_electron", "cf_n_muon"], # cf_n_deepjet
Expand Down Expand Up @@ -326,8 +358,6 @@ def set_config_defaults_and_groups(config_inst):
"hh_ggf_hbb_hvvqqlnu_kl5_kt1": {"scale": 90000, "unstack": True},
},
}
# when drawing DY as a line, use a different type of yellow
config_inst.x.process_settings_groups["unstack_all"].update({"dy": {"unstack": True, "color": "#e6d800"}})

config_inst.x.variable_settings_groups = {
"test": {
Expand All @@ -341,6 +371,10 @@ def set_config_defaults_and_groups(config_inst):
"small_legend": {
"legend_cfg": {"ncols": 2, "fontsize": 16},
},
"no_cat_label": {
"legend_cfg": {"ncols": 2, "fontsize": 20},
"annotate_cfg": {"text": ""},
},
"example": {
"legend_cfg": {"title": "my custom legend title", "ncols": 2},
"ax_cfg": {"ylabel": "my ylabel", "xlim": (0, 100)},
Expand Down Expand Up @@ -376,21 +410,30 @@ def set_config_defaults_and_groups(config_inst):
"vbfSR_dl_boosted": 3,
}

is_signal_sm = lambda proc_name: "kl1_kt1" in proc_name or "kv1_k2v1_kl1" in proc_name
# is_gghh_sm = lambda proc_name: "kl1_kt1" in proc_name
# is_qqhh_sm = lambda proc_name: "kv1_k2v1_kl1" in proc_name
# is_signal_ggf_kl1 = lambda proc_name: "kl1_kt1" in proc_name and "hh_ggf" in proc_name
# is_signal_vbf_kl1 = lambda proc_name: "kv1_k2v1_kl1" in proc_name and "hh_vbf" in proc_name
is_background = lambda proc_name: (
"hbb_hvv" not in proc_name and "hbb_hww" not in proc_name and "hbb_hzz" not in proc_name
)

config_inst.x.inference_category_rebin_processes = {
# Single lepton
"SR_sl": ("hh_ggf_hbb_hvvqqlnu_kl1_kt1", "hh_vbf_hbb_hvvqqlnu_kv1_k2v1_kl1"),
"vbfSR_sl": ("hh_ggf_hbb_hvvqqlnu_kl1_kt1", "hh_vbf_hbb_hvvqqlnu_kv1_k2v1_kl1"),
"SR_sl_resolved": ("hh_ggf_hbb_hvvqqlnu_kl1_kt1", "hh_vbf_hbb_hvvqqlnu_kv1_k2v1_kl1"),
"SR_sl_boosted": ("hh_ggf_hbb_hvvqqlnu_kl1_kt1", "hh_vbf_hbb_hvvqqlnu_kv1_k2v1_kl1"),
"vbfSR_sl_resolved": ("hh_ggf_hbb_hvvqqlnu_kl1_kt1", "hh_vbf_hbb_hvvqqlnu_kv1_k2v1_kl1"),
"vbfSR_sl_boosted": ("hh_ggf_hbb_hvvqqlnu_kl1_kt1", "hh_vbf_hbb_hvvqqlnu_kv1_k2v1_kl1"),
"BR_sl": lambda proc_name: "hbb_hvv" not in proc_name,
"SR_sl": is_signal_sm,
"vbfSR_sl": is_signal_sm,
"SR_sl_resolved": is_signal_sm,
"SR_sl_boosted": is_signal_sm,
"vbfSR_sl_resolved": is_signal_sm,
"vbfSR_sl_boosted": is_signal_sm,
"BR_sl": is_background,
# Dilepton
"SR_dl": ("hh_ggf_hbb_hvv2l2nu_kl1_kt1", "hh_vbf_hbb_hvv2l2nu_kv1_k2v1_kl1"),
"vbfSR_dl": ("hh_ggf_hbb_hvv2l2nu_kl1_kt1", "hh_vbf_hbb_hvv2l2nu_kv1_k2v1_kl1"),
"SR_dl_resolved": ("hh_ggf_hbb_hvv2l2nu_kl1_kt1", "hh_vbf_hbb_hvv2l2nu_kv1_k2v1_kl1"),
"SR_dl_boosted": ("hh_ggf_hbb_hvv2l2nu_kl1_kt1", "hh_vbf_hbb_hvv2l2nu_kv1_k2v1_kl1"),
"vbfSR_dl_resolved": ("hh_ggf_hbb_hvv2l2nu_kl1_kt1", "hh_vbf_hbb_hvv2l2nu_kv1_k2v1_kl1"),
"vbfSR_dl_boosted": ("hh_ggf_hbb_hvv2l2nu_kl1_kt1", "hh_vbf_hbb_hvv2l2nu_kv1_k2v1_kl1"),
"BR_dl": lambda proc_name: "hbb_hvv" not in proc_name,
"SR_dl": is_signal_sm,
"vbfSR_dl": is_signal_sm,
"SR_dl_resolved": is_signal_sm,
"SR_dl_boosted": is_signal_sm,
"vbfSR_dl_resolved": is_signal_sm,
"vbfSR_dl_boosted": is_signal_sm,
"BR_dl": is_background,
}
Loading

0 comments on commit 5bdc171

Please sign in to comment.