From a500c94bc6327553e80499a3918ee94c19a1d0e4 Mon Sep 17 00:00:00 2001 From: rkansal47 Date: Tue, 3 Oct 2023 19:24:51 -0500 Subject: [PATCH] first refactoring --- src/HHbbVV/postprocessing/CreateDatacard.py | 1796 +++++++---------- src/HHbbVV/postprocessing/datacard.templ.txt | 10 +- src/HHbbVV/postprocessing/datacardHelpers.py | 297 +++ .../templates/23Oct3VBF/2017_templates.pkl | Bin 0 -> 392929 bytes .../templates/23Oct3VBF/lpsfs.csv | 12 + .../templates/23Oct3VBF/systematics.json | 122 ++ 6 files changed, 1212 insertions(+), 1025 deletions(-) create mode 100644 src/HHbbVV/postprocessing/datacardHelpers.py create mode 100644 src/HHbbVV/postprocessing/templates/23Oct3VBF/2017_templates.pkl create mode 100644 src/HHbbVV/postprocessing/templates/23Oct3VBF/lpsfs.csv create mode 100644 src/HHbbVV/postprocessing/templates/23Oct3VBF/systematics.json diff --git a/src/HHbbVV/postprocessing/CreateDatacard.py b/src/HHbbVV/postprocessing/CreateDatacard.py index cde3698b..24d41159 100644 --- a/src/HHbbVV/postprocessing/CreateDatacard.py +++ b/src/HHbbVV/postprocessing/CreateDatacard.py @@ -5,13 +5,12 @@ Based on https://github.com/LPC-HH/combine-hh/blob/master/create_datacard.py -Author: Raghav Kansal +Authors: Raghav Kansal, Andres Nava """ import os, sys from typing import Dict, List, Tuple, Union -from dataclasses import dataclass, field import numpy as np import pickle, json @@ -21,10 +20,15 @@ import hist from hist import Hist -import rhalphalib as rl -# rl.util.install_roofit_helpers() -# rl.ParametericSample.PreferRooParametricHist = False +try: + import rhalphalib as rl + + rl.util.install_roofit_helpers() + rl.ParametericSample.PreferRooParametricHist = False +except: + print("rhalphalib import or install failed - not an issue for VBF") + # logging.basicConfig(level=logging.DEBUG) logging.basicConfig(level=logging.INFO) adjust_posdef_yields = False @@ -32,79 +36,24 @@ # from utils import add_bool_arg from hh_vars import LUMI, res_sig_keys, qcd_key, data_key, years, jecs, jmsr, res_mps import utils +import datacardHelpers as helpers +from datacardHelpers import ( + Syst, + ShapeVar, + add_bool_arg, + rem_neg, + sum_templates, + combine_templates, + get_effect_updown, + join_with_padding, + rebin_channels, + get_channels, + mxmy, +) import argparse -@dataclass -class Syst: - """For storing info about systematics""" - - name: str = None - prior: str = None # e.g. "lnN", "shape", etc. - - # float if same value in all regions/samples, dictionary of values per region/sample if not - # if both, region should be the higher level of the dictionary - value: Union[float, Dict[str, float]] = None - value_down: Union[float, Dict[str, float]] = None # if None assumes symmetric effect - # if the value is different for different regions or samples - diff_regions: bool = False - diff_samples: bool = False - - samples: List[str] = None # samples affected by it - # in case of uncorrelated unc., which years to split into - uncorr_years: List[str] = field(default_factory=lambda: years) - pass_only: bool = False # is it applied only in the pass regions - - def __post_init__(self): - if isinstance(self.value, dict) and not (self.diff_regions or self.diff_samples): - raise RuntimeError( - f"Value for systematic is a dictionary but neither ``diff_regions`` nor ``diff_samples`` is set." - ) - - -@dataclass -class ShapeVar: - """For storing and calculating info about variables used in fit""" - - name: str = None - bins: np.ndarray = None # bin edges - order: int = None # TF order - - def __post_init__(self): - # use bin centers for polynomial fit - self.pts = self.bins[:-1] + 0.5 * np.diff(self.bins) - # scale to be between [0, 1] - self.scaled = (self.pts - self.bins[0]) / (self.bins[-1] - self.bins[0]) - - -def add_bool_arg(parser, name, help, default=False, no_name=None): - """Add a boolean command line argument for argparse""" - varname = "_".join(name.split("-")) # change hyphens to underscores - group = parser.add_mutually_exclusive_group(required=False) - group.add_argument("--" + name, dest=varname, action="store_true", help=help) - if no_name is None: - no_name = "no-" + name - no_help = "don't " + help - else: - no_help = help - group.add_argument("--" + no_name, dest=varname, action="store_false", help=no_help) - parser.set_defaults(**{varname: default}) - - -def _join_with_padding(items, padding: int = 20): - """Joins items into a string, padded by ``padding`` spaces""" - ret = f"{{:<{padding}}}" * len(items) - return ret.format(*items) - - -def mxmy(sample): - mY = int(sample.split("-")[-1]) - mX = int(sample.split("NMSSM_XToYHTo2W2BTo4Q2B_MX-")[1].split("_")[0]) - - return (mX, mY) - - parser = argparse.ArgumentParser() parser.add_argument( "--templates-dir", @@ -165,6 +114,7 @@ def mxmy(sample): CMS_PARAMS_LABEL = "CMS_bbWW_hadronic" if not args.resonant else "CMS_XHYbbWW_boosted" +qcd_data_key = "qcd_datadriven" if args.nTF is None: args.nTF = [1, 2] if args.resonant else [0] @@ -213,17 +163,19 @@ def mxmy(sample): else: print("--sig-sample needs to be specified for resonant cards") sys.exit() -elif args.vbf: - for key in nonres_sig_keys: - mc_samples[key] = key.replace("HHbbVV", "hbbhww") - mc_samples["HHbbVV"] = "qqHH_CV_1_C2V_0_kl_1_HHbbww" - sig_keys = nonres_sig_keys_vbf else: + # change names to match HH combination convention for key in nonres_sig_keys: - mc_samples[key] = key.replace("HHbbVV", "hbbhww") + # check in case single sig sample is specified + if args.sig_sample is None or key == args.sig_sample: + if key == "HHbbVV": + mc_samples["HHbbVV"] = "ggHH_kl_1_kt_1_hbbhww" + elif key == "VBFHHbbVV": + mc_samples["VBFHHbbVV"] = "qqHH_CV_1_C2V_1_kl_1_HHbbww" + else: + mc_samples[key] = key.replace("HHbbVV", "hbbhww") - mc_samples["HHbbVV"] = "ggHH_kl_1_kt_1_hbbhww" - sig_keys = nonres_sig_keys + sig_keys.append(key) all_mc = list(mc_samples.keys()) @@ -233,10 +185,10 @@ def mxmy(sample): else: full_lumi = np.sum(list(LUMI.values())) -# rate_params = { -# sig_key: rl.IndependentParameter(f"{mc_samples[sig_key]}Rate", 1.0, 0, 1) -# for sig_key in sig_keys -# } +rate_params = { + sig_key: rl.IndependentParameter(f"{mc_samples[sig_key]}Rate", 1.0, 0, 1) + for sig_key in sig_keys +} # dictionary of nuisance params -> (modifier, samples affected by it, value) nuisance_params = { @@ -311,9 +263,9 @@ def mxmy(sample): if key != f"lumi_13TeV_{args.year}": del nuisance_params[key] -# nuisance_params_dict = { -# param: rl.NuisanceParameter(param, syst.prior) for param, syst in nuisance_params.items() -# } +nuisance_params_dict = { + param: rl.NuisanceParameter(param, syst.prior) for param, syst in nuisance_params.items() +} # dictionary of correlated shape systematics: name in templates -> name in cards, etc. corr_year_shape_systs = { @@ -357,243 +309,358 @@ def mxmy(sample): shape_systs_dict = {} -# for skey, syst in corr_year_shape_systs.items(): -# shape_systs_dict[skey] = rl.NuisanceParameter(syst.name, "shape") -# for skey, syst in uncorr_year_shape_systs.items(): -# for year in years: -# if year in syst.uncorr_years: -# shape_systs_dict[f"{skey}_{year}"] = rl.NuisanceParameter( -# f"{syst.name}_{year}", "shape" -# ) - - -def main(args): - # templates per region per year, templates per region summed across years - templates_dict, templates_summed = get_templates( - args.templates_dir, years, args.sig_separate, args.scale_templates, args.combine_lasttwo - ) +for skey, syst in corr_year_shape_systs.items(): + shape_systs_dict[skey] = rl.NuisanceParameter(syst.name, "shape") +for skey, syst in uncorr_year_shape_systs.items(): + for year in years: + if year in syst.uncorr_years: + shape_systs_dict[f"{skey}_{year}"] = rl.NuisanceParameter( + f"{syst.name}_{year}", "shape" + ) - # TODO: check if / how to include signal trig eff uncs. (rn only using bg uncs.) - process_systematics(args.templates_dir, args.sig_separate) - # random template from which to extract shape vars - sample_templates: Hist = templates_summed[list(templates_summed.keys())[0]] - # [mH(bb)] for nonresonant, [mY, mX] for resonant - shape_vars = [ - ShapeVar(name=axis.name, bins=axis.edges, order=args.nTF[i]) - for i, axis in enumerate(sample_templates.axes[1:]) - ] +def get_templates( + templates_dir: str, + years: List[str], + sig_separate: bool, + scale: float = None, + combine_lasttwo: bool = False, +): + """Loads templates, combines bg and sig templates if separate, sums across all years""" + templates_dict: Dict[str, Dict[str, Hist]] = {} - dc_args = [args, templates_dict, templates_summed, shape_vars] - if args.vbf: - createDatacardABCD(*dc_args) + if not sig_separate: + # signal and background templates in same hist, just need to load and sum across years + for year in years: + with open(f"{templates_dir}/{year}_templates.pkl", "rb") as f: + templates_dict[year] = rem_neg(pickle.load(f)) else: - createDatacardAlphabet(*dc_args) - + # signal and background in different hists - need to combine them into one hist + for year in years: + with open(f"{templates_dir}/backgrounds/{year}_templates.pkl", "rb") as f: + bg_templates = rem_neg(pickle.load(f)) -def createDatacardAlphabet(args, templates_dict, templates_summed, shape_vars): - # (pass, fail) x (unblinded, blinded) - regions: List[str] = [ - f"{pf}{blind_str}" for pf in [f"pass", "fail"] for blind_str in ["", "Blinded"] - ] + sig_templates = [] - # build actual fit model now - model = rl.Model("HHModel" if not args.resonant else "XHYModel") + for sig_key in sig_keys: + with open(f"{templates_dir}/{hist_names[sig_key]}/{year}_templates.pkl", "rb") as f: + sig_templates.append(rem_neg(pickle.load(f))) - # Fill templates per sample, incl. systematics - # TODO: blinding for resonant - fill_args = [ - model, - regions, - templates_dict, - templates_summed, - mc_samples, - nuisance_params, - nuisance_params_dict, - corr_year_shape_systs, - uncorr_year_shape_systs, - shape_systs_dict, - args.bblite, - ] + templates_dict[year] = combine_templates(bg_templates, sig_templates) - fit_args = [model, shape_vars, templates_summed, args.scale_templates, args.min_qcd_val] + if scale is not None and scale != 1: + for year in templates_dict: + for key in templates_dict[year]: + templates_dict[year][key] = templates_dict[year][key] * scale - if args.resonant: - # fill 1 channel per mX bin - for i in range(len(shape_vars[1].pts)): - logging.info(f"\n\nFilling templates for mXbin {i}") - fill_regions(*fill_args, mX_bin=i) + if combine_lasttwo: + helpers.combine_last_two_bins(templates_dict, years) - res_alphabet_fit(*fit_args) - else: - fill_regions(*fill_args) - nonres_alphabet_fit(*fit_args) + templates_summed: Dict[str, Hist] = sum_templates(templates_dict, years) # sum across years + return templates_dict, templates_summed - ############################################## - # Save model - ############################################## - logging.info("rendering combine model") +def process_systematics_combined(systematics: Dict): + """Get total uncertainties from per-year systs in ``systematics``""" + global nuisance_params + for sig_key in sig_keys: + # already for all years + nuisance_params[f"{CMS_PARAMS_LABEL}_lp_sf_{mc_samples[sig_key]}"].value = ( + 1 + systematics[sig_key]["lp_sf_unc"] + ) - os.system(f"mkdir -p {args.cards_dir}") + tdict = {} + for region in systematics[years[0]]: + if len(years) > 1: + trig_totals, trig_total_errs = [], [] + for year in years: + trig_totals.append(systematics[year][region]["trig_total"]) + trig_total_errs.append(systematics[year][region]["trig_total_err"]) - out_dir = ( - os.path.join(str(args.cards_dir), args.model_name) - if args.model_name is not None - else args.cards_dir - ) - model.renderCombine(out_dir) + trig_total = np.sum(trig_totals) + trig_total_errs = np.linalg.norm(trig_total_errs) - with open(f"{out_dir}/model.pkl", "wb") as fout: - pickle.dump(model, fout, 2) # use python 2 compatible protocol + tdict[region] = 1 + (trig_total_errs / trig_total) + else: + year = years[0] + tdict[region] = 1 + ( + systematics[year][region]["trig_total_err"] + / systematics[year][region]["trig_total"] + ) + nuisance_params[f"{CMS_PARAMS_LABEL}_triggerEffSF_uncorrelated"].value = tdict -def createDatacardABCD(args, templates_dict, templates_summed, shape_vars): - # A, B, C, D (in order) - channels = ["pass", "pass_sidebands", "fail", "fail_sidebands"] # analogous to regions - # print("templates summed",templates_summed) - channels_dict, channels_summed = get_channels( - templates_dict, templates_summed, shape_vars[0] - ) # unsure about if this is shapevars analogous to template_summed and dict - # print("channels summed",channels_summed) - print("dkfjdkfjkd") - collected_data = [] - # print('channels_summed',channels_summed["pass"][data_key].value,dir(channels_summed["pass"][data_key]),data_key) - # print(channels_summed['pass']) - - # add systematics (copying from alphabet method but instead of values() we use values and we don't use rl.setParamEffect...) - for region in channels: - region_templates = channels_summed[region] + print("Nuisance Parameters\n", nuisance_params) - pass_region = region.startswith("pass") - region_noblinded = region.split("Blinded")[0] - blind_str = "Blinded" if region.endswith("Blinded") else "" - logging.info("starting region: %s" % region) +def process_systematics_separate(bg_systematics: Dict, sig_systs: Dict[str, Dict]): + """Get total uncertainties from per-year systs separated into bg and sig systs""" + global nuisance_params - for sample_name, card_name in mc_samples.items(): - # don't add signals in fail regions - # also skip resonant signals in pass blinded - they are ignored in the validation fits anyway - if sample_name in sig_keys: - if not pass_region: # or (mX_bin is not None and region == "passBlinded"): - logging.info(f"\nSkipping {sample_name} in {region} region\n") - continue + for sig_key in sig_keys: + # already for all years + nuisance_params[f"{CMS_PARAMS_LABEL}_lp_sf_{mc_samples[sig_key]}"].value = ( + 1 + sig_systs[sig_key][sig_key]["lp_sf_unc"] + ) - # single top only in fail regions - if sample_name == "ST" and pass_region: - logging.info(f"\nSkipping ST in {region} region\n") - continue + # use only bg trig uncs. + tdict = {} + for region in bg_systematics[years[0]]: + if len(years) > 1: + trig_totals, trig_total_errs = [], [] + for year in years: + trig_totals.append(bg_systematics[year][region]["trig_total"]) + trig_total_errs.append(bg_systematics[year][region]["trig_total_err"]) - logging.info("get templates for: %s" % sample_name) - sample_template = region_templates[sample_name] + trig_total = np.sum(trig_totals) + trig_total_errs = np.linalg.norm(trig_total_errs) - # nominal values, errors - values_nominal = np.maximum(sample_template.value, 0.0) + tdict[region] = 1 + (trig_total_errs / trig_total) + else: + year = years[0] + tdict[region] = 1 + ( + bg_systematics[year][region]["trig_total_err"] + / bg_systematics[year][region]["trig_total"] + ) - mask = values_nominal > 0 - errors_nominal = np.ones_like(values_nominal) - if mask: - errors_nominal = 1.0 + np.sqrt(sample_template.variance) / values_nominal + nuisance_params[f"{CMS_PARAMS_LABEL}_triggerEffSF_uncorrelated"].value = tdict - # no MC stats?? I removed it + print("Nuisance Parameters\n", nuisance_params) - # rate systematics - for skey, syst in nuisance_params.items(): - if sample_name not in syst.samples or (not pass_region and syst.pass_only): - continue - logging.info(f"Getting {skey} rate") - if skey == "CMS_bbWW_hadronic_triggerEffSF_uncorrelated": - logging.info( - f"\nSkipping rate systematics calc for {skey} of {sample_name} in {region} region\n" - ) - continue +def process_systematics(templates_dir: str, sig_separate: bool): + """Processses systematics based on whether signal and background JSONs are combined or not""" + if not sig_separate: + with open(f"{templates_dir}/systematics.json", "r") as f: + systematics = json.load(f) - val, val_down = syst.value, syst.value_down - if syst.diff_regions: - region_name = region_noblinded - val = val[region_name] - val_down = val_down[region_name] if val_down is not None else val_down - if syst.diff_samples: - val = val[sample_name] - val_down = val_down[sample_name] if val_down is not None else val_down + process_systematics_combined(systematics) # LP SF and trig effs. + else: + with open(f"{templates_dir}/backgrounds/systematics.json", "r") as f: + bg_systematics = json.load(f) - # sample.setParamEffect(param, val, effect_down=val_down) - print("513 rate systematics val, val down", val, val_down) - collected_data.append( - { - "type": "rate systematics", - "region": region, - "sample_name": sample_name, - "skey": skey, - "val": val, - "val_down": val_down, - } - ) + sig_systs = {} + for sig_key in sig_keys: + with open(f"{templates_dir}/{hist_names[sig_key]}/systematics.json", "r") as f: + sig_systs[sig_key] = json.load(f) - # correlated shape systematics - for skey, syst in corr_year_shape_systs.items(): - if sample_name not in syst.samples or (not pass_region and syst.pass_only): - continue + process_systematics_separate(bg_systematics, sig_systs) # LP SF and trig effs. - logging.info(f"Getting {skey} shapes") - if region == "pass_sidebands" or region == "fail_sidebands": - logging.info(f"\nSkipping shape systematics calc in {region} region\n") - # continue - if ( - skey in jecs or skey in jmsr - ): # Here we are not using the channels_summed values since I am not sure if I can get 'pass_JES_up' in there... - # JEC/JMCs saved as different "region" in dict # notation is off here, check actual names to compare - # s1 = f"{region_noblinded}_{skey}_up{blind_str}" +# TODO: separate function for VBF? +def get_year_updown( + templates_dict, sample, region, region_noblinded, blind_str, year, skey, mX_bin=None +): + """ + Return templates with only the given year's shapes shifted up and down by the ``skey`` systematic. + Returns as [up templates, down templates] + """ + updown = [] - prefix, *suffix = region_noblinded.split("_") + for shift in ["up", "down"]: + sshift = f"{skey}_{shift}" + # get nominal templates for each year + templates = {y: templates_dict[y][region][sample, ...] for y in years} + # replace template for this year with the shifted tempalte + if skey in jecs or skey in jmsr: + # JEC/JMCs saved as different "region" in dict + reg_name = ( + f"{region_noblinded}_{sshift}{blind_str}" + if mX_bin is None + else f"{region}_{sshift}" + ) - if suffix: # If there's a suffix like "sidebands" - suffix_str = f"_{suffix[0]}" - else: - suffix_str = "" + if args.vbf: + prefix, *suffix = region_noblinded.split("_") - up_hist = channels_summed[f"{prefix}_{skey}_up{blind_str}{suffix_str}"][ - sample_name - ] - down_hist = channels_summed[f"{prefix}_{skey}_down{blind_str}{suffix_str}"][ - sample_name - ] + if suffix: # If there's a suffix like "sidebands" + suffix_str = f"_{suffix[0]}" + else: + suffix_str = "" + reg_name = f"{prefix}_{sshift}{blind_str}{suffix_str}" + # print("templates",templates,year,reg_name,sample,templates_dict[year][reg_name][sample , ...]) + templates[year] = templates_dict[year][reg_name][sample, ...] + else: + templates[year] = templates_dict[year][reg_name][sample, :, ...] + else: + # weight uncertainties saved as different "sample" in dict + templates[year] = templates_dict[year][region][f"{sample}_{sshift}", ...] - values_up = up_hist.value - values_down = down_hist.value + if mX_bin is not None: + for year, template in templates.items(): + templates[year] = template[:, mX_bin] + + # sum templates with year's template replaced with shifted # might need to adjust the dimensions of this if args.vbf + if args.vbf: + updown.append(list(templates.values())[0].value) + else: + updown.append(sum(list(templates.values())).values()) + + return updown + + +def fill_regions( + model: rl.Model, + regions: List[str], + templates_dict: Dict, + templates_summed: Dict, + mc_samples: Dict[str, str], + nuisance_params: Dict[str, Syst], + nuisance_params_dict: Dict[str, rl.NuisanceParameter], + corr_year_shape_systs: Dict[str, Syst], + uncorr_year_shape_systs: Dict[str, Syst], + shape_systs_dict: Dict[str, rl.NuisanceParameter], + bblite: bool = True, + mX_bin: int = None, +): + """Fill samples per region including given rate, shape and mcstats systematics. + Ties "blinded" and "nonblinded" mc stats parameters together. + + Args: + model (rl.Model): rhalphalib model + regions (List[str]): list of regions to fill + templates_dict (Dict): dictionary of all templates + templates_summed (Dict): dictionary of templates summed across years + mc_samples (Dict[str, str]): dict of mc samples and their names in the given templates -> card names + nuisance_params (Dict[str, Tuple]): dict of nuisance parameter names and tuple of their + (modifier, samples affected by it, value) + nuisance_params_dict (Dict[str, rl.NuisanceParameter]): dict of nuisance parameter names + and NuisanceParameter object + corr_year_shape_systs (Dict[str, Tuple]): dict of shape systs (correlated across years) + and tuple of their (name in cards, samples affected by it) + uncorr_year_shape_systs (Dict[str, Tuple]): dict of shape systs (unccorrelated across years) + and tuple of their (name in cards, samples affected by it) + shape_systs_dict (Dict[str, rl.NuisanceParameter]): dict of shape syst names and + NuisanceParameter object + pass_only (List[str]): list of systematics which are only applied in the pass region(s) + bblite (bool): use Barlow-Beeston-lite method or not (single mcstats param across MC samples) + mX_bin (int): if doing 2D fit (for resonant), which mX bin to be filled + """ + + for region in regions: + if mX_bin is None: + region_templates = templates_summed[region] + else: + region_templates = templates_summed[region][:, :, mX_bin] + + pass_region = region.startswith("pass") + region_noblinded = region.split("Blinded")[0] + blind_str = "Blinded" if region.endswith("Blinded") else "" + + logging.info("starting region: %s" % region) + binstr = "" if mX_bin is None else f"mXbin{mX_bin}" + ch = rl.Channel(binstr + region.replace("_", "")) # can't have '_'s in name + model.addChannel(ch) + + for sample_name, card_name in mc_samples.items(): + # don't add signals in fail regions + # also skip resonant signals in pass blinded - they are ignored in the validation fits anyway + if sample_name in sig_keys: + if not pass_region or (mX_bin is not None and region == "passBlinded"): + logging.info(f"\nSkipping {sample_name} in {region} region\n") + continue + + # single top only in fail regions + if sample_name == "ST" and pass_region: + logging.info(f"\nSkipping ST in {region} region\n") + continue + + logging.info("get templates for: %s" % sample_name) + + sample_template = region_templates[sample_name, :] + + stype = rl.Sample.SIGNAL if sample_name in sig_keys else rl.Sample.BACKGROUND + sample = rl.TemplateSample(ch.name + "_" + card_name, stype, sample_template) + + # # rate params per signal to freeze them for individual limits + # if stype == rl.Sample.SIGNAL and len(sig_keys) > 1: + # srate = rate_params[sample_name] + # sample.setParamEffect(srate, 1 * srate) + + # nominal values, errors + values_nominal = np.maximum(sample_template.values(), 0.0) + + mask = values_nominal > 0 + errors_nominal = np.ones_like(values_nominal) + errors_nominal[mask] = ( + 1.0 + np.sqrt(sample_template.variances()[mask]) / values_nominal[mask] + ) + + logging.debug("nominal : {nominal}".format(nominal=values_nominal)) + logging.debug("error : {errors}".format(errors=errors_nominal)) + + if not bblite and args.mcstats: + # set mc stat uncs + logging.info("setting autoMCStats for %s in %s" % (sample_name, region)) + + # tie MC stats parameters together in blinded and "unblinded" region in nonresonant + region_name = region if args.resonant else region_noblinded + stats_sample_name = f"{CMS_PARAMS_LABEL}_{region_name}_{card_name}" + sample.autoMCStats( + sample_name=stats_sample_name, + # this function uses a different threshold convention from combine + threshold=np.sqrt(1 / args.mcstats_threshold), + epsilon=args.epsilon, + ) + + # rate systematics + for skey, syst in nuisance_params.items(): + if sample_name not in syst.samples or (not pass_region and syst.pass_only): + continue + + logging.info(f"Getting {skey} rate") + + param = nuisance_params_dict[skey] + + val, val_down = syst.value, syst.value_down + if syst.diff_regions: + region_name = region if args.resonant else region_noblinded + val = val[region_name] + val_down = val_down[region_name] if val_down is not None else val_down + if syst.diff_samples: + val = val[sample_name] + val_down = val_down[sample_name] if val_down is not None else val_down + + sample.setParamEffect(param, val, effect_down=val_down) + + # correlated shape systematics + for skey, syst in corr_year_shape_systs.items(): + if sample_name not in syst.samples or (not pass_region and syst.pass_only): + continue + + logging.info(f"Getting {skey} shapes") + + if skey in jecs or skey in jmsr: + # JEC/JMCs saved as different "region" in dict + if mX_bin is None: + up_hist = templates_summed[f"{region_noblinded}_{skey}_up{blind_str}"][ + sample_name, : + ] + down_hist = templates_summed[f"{region_noblinded}_{skey}_down{blind_str}"][ + sample_name, : + ] + else: + # regions names are different from different blinding strats + up_hist = templates_summed[f"{region}_{skey}_up"][sample_name, :, mX_bin] + down_hist = templates_summed[f"{region}_{skey}_down"][ + sample_name, :, mX_bin + ] + + values_up = up_hist.values() + values_down = down_hist.values() else: # weight uncertainties saved as different "sample" in dict - values_up = region_templates[f"{sample_name}_{skey}_up"].value - values_down = region_templates[f"{sample_name}_{skey}_down"].value + values_up = region_templates[f"{sample_name}_{skey}_up", :].values() + values_down = region_templates[f"{sample_name}_{skey}_down", :].values() logger = logging.getLogger( "validate_shapes_{}_{}_{}".format(region, sample_name, skey) ) - # effect_up, effect_down = get_effect_updown( values_nominal, values_up, values_down, mask, logger ) - effect_up = values_up / values_nominal - effect_down = values_down / values_nominal - - # sample.setParamEffect(shape_systs_dict[skey], effect_up, effect_down) - print( - "correlated shape systematics shape_systs_dict[skey], effect_up, effect_down", - shape_systs_dict, - skey, - effect_up, - effect_down, - ) - collected_data.append( - { - "type": "correlated shape systematics", - "region": region, - "sample_name": sample_name, - "skey": skey, - "effect_up": effect_up, - "effect_down": effect_down, - } + effect_up, effect_down = get_effect_updown( + values_nominal, values_up, values_down, mask, logger ) + sample.setParamEffect(shape_systs_dict[skey], effect_up, effect_down) # uncorrelated shape systematics for skey, syst in uncorr_year_shape_systs.items(): @@ -601,461 +668,357 @@ def createDatacardABCD(args, templates_dict, templates_summed, shape_vars): continue logging.info(f"Getting {skey} shapes") - if region == "pass_sidebands" or region == "fail_sidebands": - logging.info( - f"\nSkipping uncorrelated shape systematics calc in {region} region\n" - ) - # continue for year in years: if year not in syst.uncorr_years: continue values_up, values_down = get_year_updown( - channels_dict, + templates_dict, sample_name, region, region_noblinded, blind_str, year, skey, - mX_bin=None, + mX_bin=mX_bin, ) logger = logging.getLogger( "validate_shapes_{}_{}_{}".format(region, sample_name, skey) ) - # effect_up, effect_down = get_effect_updown( values_nominal, values_up, values_down, mask, logger ) - effect_up = values_up / values_nominal - effect_down = values_down / values_nominal - # sample.setParamEffect( shape_systs_dict[f"{skey}_{year}"], effect_up, effect_down) - print( - "uncorrelated shape systematics (shape_systs_dict[fskey_year], effect_up, effect_down)", - shape_systs_dict, - f"{skey}_{year}", - effect_up, - effect_down, + effect_up, effect_down = get_effect_updown( + values_nominal, values_up, values_down, mask, logger ) - collected_data.append( - { - "type": "uncorrelated shape systematics", - "region": region, - "sample_name": sample_name, - "skey": skey, - "effect_up": effect_up, - "effect_down": effect_down, - "year": year, - } + sample.setParamEffect( + shape_systs_dict[f"{skey}_{year}"], effect_up, effect_down ) - sig_key = "qqHH_CV_1_C2V_0_kl_1_HHbbVV" - - # Process collected_data to compute systematics argument: - systematics_strings = {} - sig_key = "qqHH_CV_1_C2V_0_kl_1_HHbbVV" - - # Iterate through the collected_data - for data in collected_data: - sample = data["sample_name"] - systematics_type = data["type"] - skey = data["skey"] - - if ( - systematics_type != "rate systematics" and sample != sig_key - ): # if shaped uncertainty then only look at signal. assuming only one signal matters - continue + ch.addSample(sample) - is_rs = systematics_type == "rate systematics" - val = data.get("val", None) - val_down = data.get("val_down", None) - region = data["region"] - effect_up = data.get("effect_up", None) - effect_down = data.get("effect_down", None) + if bblite and args.mcstats: + # tie MC stats parameters together in blinded and "unblinded" region in nonresonant + channel_name = region if args.resonant else region_noblinded + ch.autoMCStats( + channel_name=f"{CMS_PARAMS_LABEL}_{channel_name}", + threshold=args.mcstats_threshold, + epsilon=args.epsilon, + ) - # initialize list of systematics - if skey not in systematics_strings: - systematics_strings[skey] = ["-"] * 2 * len(channels) + # data observed + ch.setObservation(region_templates[data_key, :]) - index = channels.index(region) - if is_rs: # if rate scale, then apply uncertainty to sig and bck - if val_down != None: - systematics_strings[skey][2 * index] = f"{{{val},{val_down}}}" - systematics_strings[skey][2 * index + 1] = f"{{{val},{val_down}}}" - else: - systematics_strings[skey][2 * index] = val - systematics_strings[skey][2 * index + 1] = val - else: - systematics_strings[skey][2 * index] = f"{{{effect_up},{effect_down}}}" - # Format the resulting lists into strings - syst_list = [] - for skey, values in systematics_strings.items(): - syst_list.append(_join_with_padding([skey, "lnN", *values])) +def nonres_alphabet_fit( + model: rl.Model, + shape_vars: List[ShapeVar], + templates_summed: Dict, + scale: float = None, + min_qcd_val: float = None, +): + shape_var = shape_vars[0] + m_obs = rl.Observable(shape_var.name, shape_var.bins) - syst_string = "\n".join(syst_list) + # QCD overall pass / fail efficiency + qcd_eff = ( + templates_summed[f"pass"][qcd_key, :].sum().value + / templates_summed[f"fail"][qcd_key, :].sum().value + ) - # dict storing all the substitutions for the datacard template - datacard_dict = { - "num_bins": 4, - "num_bgs": 1, - "bins": _join_with_padding(channels), - "observations": _join_with_padding( - [channels_summed[channel][data_key].value for channel in channels] - ), - "bins_x_processes": _join_with_padding([channel for channel in channels for _ in range(2)]), - "processes_per_bin": _join_with_padding( - [item for channel in channels for item in ("sig", "bkg")] - ), - "processes_index": _join_with_padding([item for channel in channels for item in (0, 1)]), - "processes_rates": _join_with_padding( - [item for channel in channels for item in (channels_summed[channel][sig_key].value, 1)] - ), - "binA": channels[0], - "binB": channels[1], - "obsB": channels_summed[channels[1]][data_key].value, - "binC": channels[2], - "obsC": channels_summed[channels[2]][data_key].value, - "binD": channels[3], - "obsD": channels_summed[channels[3]][data_key].value, - "systematics": syst_string, - } + # transfer factor + tf_dataResidual = rl.BasisPoly( + f"{CMS_PARAMS_LABEL}_tf_dataResidual", + (shape_var.order,), + [shape_var.name], + basis="Bernstein", + limits=(-20, 20), + square_params=True, + ) + tf_dataResidual_params = tf_dataResidual(shape_var.scaled) + tf_params_pass = qcd_eff * tf_dataResidual_params # scale params initially by qcd eff - # fill datacard with args - with open("datacard.templ.txt", "r") as f: - templ = Template(f.read()) - out_file = f"/home/users/annava/CMSSW_12_3_4/src/HiggsAnalysis/CombinedLimit/datacards/datacard.templ_{sig_key}.txt" - with open(out_file, "w") as f: - f.write(templ.substitute(datacard_dict)) + # qcd params + qcd_params = np.array( + [ + rl.IndependentParameter(f"{CMS_PARAMS_LABEL}_tf_dataResidual_Bin{i}", 0) + for i in range(m_obs.nbins) + ] + ) + for blind_str in ["", "Blinded"]: + # for blind_str in ["Blinded"]: + passChName = f"pass{blind_str}".replace("_", "") + failChName = f"fail{blind_str}".replace("_", "") + logging.info( + "setting transfer factor for pass region %s, fail region %s" % (passChName, failChName) + ) + failCh = model[failChName] + passCh = model[passChName] -def _rem_neg(template_dict: Dict): - for sample, template in template_dict.items(): - template.values()[template.values() < 0] = 0 + # sideband fail + # was integer, and numpy complained about subtracting float from it + initial_qcd = failCh.getObservation().astype(float) + for sample in failCh: + if args.resonant and sample.sampletype == rl.Sample.SIGNAL: + continue + logging.debug("subtracting %s from qcd" % sample._name) + initial_qcd -= sample.getExpectation(nominal=True) - return template_dict + if np.any(initial_qcd < 0.0): + raise ValueError("initial_qcd negative for some bins..", initial_qcd) + # idea here is that the error should be 1/sqrt(N), so parametrizing it as (1 + 1/sqrt(N))^qcdparams + # will result in qcdparams errors ~±1 + # but because qcd is poorly modelled we're scaling sigma scale -def _match_samples(template: Hist, match_template: Hist) -> Hist: - """Temporary solution for case where 2018 templates don't have L1 prefiring in their axis + sigmascale = 10 # to scale the deviation from initial + if scale is not None: + sigmascale *= scale - Args: - template (Hist): template to which samples may need to be added - match_template (Hist): template from which to extract extra samples - """ - samples = list(match_template.axes[0]) + scaled_params = ( + initial_qcd * (1 + sigmascale / np.maximum(1.0, np.sqrt(initial_qcd))) ** qcd_params + ) - # if template already has all the samples, don't do anything - if list(template.axes[0]) == samples: - return template + # add samples + fail_qcd = rl.ParametericSample( + f"{failChName}_{CMS_PARAMS_LABEL}_qcd_datadriven", + rl.Sample.BACKGROUND, + m_obs, + scaled_params, + ) + failCh.addSample(fail_qcd) - # otherwise remake template with samples from ``match_template`` - h = hist.Hist(*match_template.axes, storage="weight") + pass_qcd = rl.TransferFactorSample( + f"{passChName}_{CMS_PARAMS_LABEL}_qcd_datadriven", + rl.Sample.BACKGROUND, + tf_params_pass, + fail_qcd, + min_val=min_qcd_val, + ) + passCh.addSample(pass_qcd) - for sample in template.axes[0]: - sample_index = np.where(np.array(list(h.axes[0])) == sample)[0][0] - h.view()[sample_index] = template[sample, ...].view() - return h +def res_alphabet_fit( + model: rl.Model, + shape_vars: List[ShapeVar], + templates_summed: Dict, + scale: float = None, + min_qcd_val: float = None, +): + shape_var_mY, shape_var_mX = shape_vars + m_obs = rl.Observable(shape_var_mY.name, shape_var_mY.bins) + # QCD overall pass / fail efficiency + qcd_eff = ( + templates_summed[f"pass"][qcd_key, ...].sum().value + / templates_summed[f"fail"][qcd_key, ...].sum().value + ) -def sum_templates(template_dict: Dict): - """Sum templates across years""" + # transfer factor + tf_dataResidual = rl.BasisPoly( + f"{CMS_PARAMS_LABEL}_tf_dataResidual", + (shape_var_mX.order, shape_var_mY.order), + [shape_var_mX.name, shape_var_mY.name], + basis="Bernstein", + limits=(-20, 20), + square_params=True, + ) - ttemplate = list(template_dict.values())[0] # sample templates to extract values from - combined = {} + # based on https://github.com/nsmith-/rhalphalib/blob/9472913ef0bab3eb47bc942c1da4e00d59fb5202/tests/test_rhalphalib.py#L38 + mX_scaled_grid, mY_scaled_grid = np.meshgrid( + shape_var_mX.scaled, shape_var_mY.scaled, indexing="ij" + ) + # numpy array of + tf_dataResidual_params = tf_dataResidual(mX_scaled_grid, mY_scaled_grid) + tf_params_pass = qcd_eff * tf_dataResidual_params # scale params initially by qcd eff - for region in ttemplate: - thists = [] + for mX_bin in range(len(shape_var_mX.pts)): + # qcd params + qcd_params = np.array( + [ + rl.IndependentParameter(f"{CMS_PARAMS_LABEL}_qcdparam_mXbin{mX_bin}_mYbin{i}", 0) + for i in range(m_obs.nbins) + ] + ) - for year in years: - # temporary solution for case where 2018 templates don't have L1 prefiring in their axis - thists.append( - _match_samples(template_dict[year][region], template_dict["2017"][region]) + for blind_str in ["", "Blinded"]: + # for blind_str in ["Blinded"]: + passChName = f"mXbin{mX_bin}pass{blind_str}".replace("_", "") + failChName = f"mXbin{mX_bin}fail{blind_str}".replace("_", "") + logging.info( + "setting transfer factor for pass region %s, fail region %s" + % (passChName, failChName) ) + failCh = model[failChName] + passCh = model[passChName] - combined[region] = sum(thists) - - return combined - + # sideband fail + # was integer, and numpy complained about subtracting float from it + initial_qcd = failCh.getObservation().astype(float) + for sample in failCh: + logging.debug("subtracting %s from qcd" % sample._name) + initial_qcd -= sample.getExpectation(nominal=True) -def combine_templates( - bg_templates: Dict[str, Hist], sig_templates: List[Dict[str, Hist]] -) -> Dict[str, Hist]: - """ - Combines BG and signal templates into a single Hist (per region). + if np.any(initial_qcd < 0.0): + # raise ValueError("initial_qcd negative for some bins..", initial_qcd) + logging.warning(f"initial_qcd negative for some bins... {initial_qcd}") + initial_qcd[initial_qcd < 0] = 0 - Args: - bg_templates (Dict[str, Hist]): dictionary of region -> Hist - sig_templates (List[Dict[str, Hist]]): list of dictionaries of region -> Hist for each - signal samples - """ - ctemplates = {} + # idea here is that the error should be 1/sqrt(N), so parametrizing it as (1 + 1/sqrt(N))^qcdparams + # will result in qcdparams errors ~±1 + # but because qcd is poorly modelled we're scaling sigma scale - for region, bg_template in bg_templates.items(): - # combined sig + bg samples - csamples = list(bg_template.axes[0]) + [ - s for sig_template in sig_templates for s in list(sig_template[region].axes[0]) - ] + sigmascale = 10 # to scale the deviation from initial + if scale is not None: + sigmascale *= scale - # new hist with all samples - ctemplate = Hist( - hist.axis.StrCategory(csamples, name="Sample"), - *bg_template.axes[1:], - storage="weight", - ) + scaled_params = ( + initial_qcd * (1 + sigmascale / np.maximum(1.0, np.sqrt(initial_qcd))) ** qcd_params + ) + # scaled_params = initial_qcd * (1.1 ** qcd_params) - # add background hists - for sample in bg_template.axes[0]: - sample_key_index = np.where(np.array(list(ctemplate.axes[0])) == sample)[0][0] - ctemplate.view(flow=True)[sample_key_index, ...] = bg_template[sample, ...].view( - flow=True + # add samples + fail_qcd = rl.ParametericSample( + f"{failChName}_{CMS_PARAMS_LABEL}_qcd_datadriven", + rl.Sample.BACKGROUND, + m_obs, + scaled_params, ) + failCh.addSample(fail_qcd) - # add signal hists - for st in sig_templates: - sig_template = st[region] - for sample in sig_template.axes[0]: - sample_key_index = np.where(np.array(list(ctemplate.axes[0])) == sample)[0][0] - ctemplate.view(flow=True)[sample_key_index, ...] = sig_template[sample, ...].view( - flow=True - ) + pass_qcd = rl.TransferFactorSample( + f"{passChName}_{CMS_PARAMS_LABEL}_qcd_datadriven", + rl.Sample.BACKGROUND, + tf_params_pass[mX_bin, :], + fail_qcd, + min_val=min_qcd_val, + ) + passCh.addSample(pass_qcd) - ctemplates[region] = ctemplate - return ctemplates +def createDatacardAlphabet(args, templates_dict, templates_summed, shape_vars): + # (pass, fail) x (unblinded, blinded) + regions: List[str] = [ + f"{pf}{blind_str}" for pf in [f"pass", "fail"] for blind_str in ["", "Blinded"] + ] + # build actual fit model now + model = rl.Model("HHModel" if not args.resonant else "XHYModel") -def _combine_last_two_bins(templates_dict): - for year in years: - for region in templates_dict[year]: - templates_dict[year][region] = utils.rebin_hist( - templates_dict[year][region], - "bbFatJetParticleNetMass", - list(range(50, 240, 10)) + [250], - ) + # Fill templates per sample, incl. systematics + # TODO: blinding for resonant + fill_args = [ + model, + regions, + templates_dict, + templates_summed, + mc_samples, + nuisance_params, + nuisance_params_dict, + corr_year_shape_systs, + uncorr_year_shape_systs, + shape_systs_dict, + args.bblite, + ] + fit_args = [model, shape_vars, templates_summed, args.scale_templates, args.min_qcd_val] -def get_templates( - templates_dir: str, - years: List[str], - sig_separate: bool, - scale: float = None, - combine_lasttwo: bool = False, -): - """Loads templates, combines bg and sig templates if separate, sums across all years""" - templates_dict: Dict[str, Dict[str, Hist]] = {} + if args.resonant: + # fill 1 channel per mX bin + for i in range(len(shape_vars[1].pts)): + logging.info(f"\n\nFilling templates for mXbin {i}") + fill_regions(*fill_args, mX_bin=i) - if not sig_separate: - # signal and background templates in same hist, just need to load and sum across years - for year in years: - with open(f"{templates_dir}/{year}_templates.pkl", "rb") as f: - templates_dict[year] = _rem_neg(pickle.load(f)) + res_alphabet_fit(*fit_args) else: - # signal and background in different hists - need to combine them into one hist - for year in years: - with open(f"{templates_dir}/backgrounds/{year}_templates.pkl", "rb") as f: - bg_templates = _rem_neg(pickle.load(f)) - - sig_templates = [] - - for sig_key in sig_keys: - with open(f"{templates_dir}/{hist_names[sig_key]}/{year}_templates.pkl", "rb") as f: - sig_templates.append(_rem_neg(pickle.load(f))) - - templates_dict[year] = combine_templates(bg_templates, sig_templates) - - if scale is not None and scale != 1: - for year in templates_dict: - for key in templates_dict[year]: - templates_dict[year][key] = templates_dict[year][key] * scale + fill_regions(*fill_args) + nonres_alphabet_fit(*fit_args) - if combine_lasttwo: - _combine_last_two_bins(templates_dict) + ############################################## + # Save model + ############################################## - templates_summed: Dict[str, Hist] = sum_templates(templates_dict) # sum across years - return templates_dict, templates_summed + logging.info("rendering combine model") + os.system(f"mkdir -p {args.cards_dir}") -def process_systematics_combined(systematics: Dict): - """Get total uncertainties from per-year systs in ``systematics``""" - global nuisance_params - for sig_key in sig_keys: - # already for all years - nuisance_params[f"{CMS_PARAMS_LABEL}_lp_sf_{mc_samples[sig_key]}"].value = ( - 1 + systematics[sig_key]["lp_sf_unc"] - ) - print( - "regions", - systematics[years[0]], + out_dir = ( + os.path.join(str(args.cards_dir), args.model_name) + if args.model_name is not None + else args.cards_dir ) - tdict = {} - for region in systematics[years[0]]: - print("766 region", region) - if len(years) > 1: - trig_totals, trig_total_errs = [], [] - for year in years: - trig_totals.append(systematics[year][region]["trig_total"]) - trig_total_errs.append(systematics[year][region]["trig_total_err"]) - - trig_total = np.sum(trig_totals) - trig_total_errs = np.linalg.norm(trig_total_errs) - - tdict[region] = 1 + (trig_total_errs / trig_total) - else: - year = years[0] - tdict[region] = 1 + ( - systematics[year][region]["trig_total_err"] - / systematics[year][region]["trig_total"] - ) - - nuisance_params[f"{CMS_PARAMS_LABEL}_triggerEffSF_uncorrelated"].value = tdict - - print("Nuisance Parameters\n", nuisance_params) - - -def process_systematics_separate(bg_systematics: Dict, sig_systs: Dict[str, Dict]): - """Get total uncertainties from per-year systs separated into bg and sig systs""" - global nuisance_params - - for sig_key in sig_keys: - # already for all years - nuisance_params[f"{CMS_PARAMS_LABEL}_lp_sf_{mc_samples[sig_key]}"].value = ( - 1 + sig_systs[sig_key][sig_key]["lp_sf_unc"] - ) - - # use only bg trig uncs. - tdict = {} - for region in bg_systematics[years[0]]: - print("802 region", region) - if len(years) > 1: - trig_totals, trig_total_errs = [], [] - for year in years: - trig_totals.append(bg_systematics[year][region]["trig_total"]) - trig_total_errs.append(bg_systematics[year][region]["trig_total_err"]) - - trig_total = np.sum(trig_totals) - trig_total_errs = np.linalg.norm(trig_total_errs) - - tdict[region] = 1 + (trig_total_errs / trig_total) - else: - year = years[0] - tdict[region] = 1 + ( - bg_systematics[year][region]["trig_total_err"] - / bg_systematics[year][region]["trig_total"] - ) - - nuisance_params[f"{CMS_PARAMS_LABEL}_triggerEffSF_uncorrelated"].value = tdict - - print("Nuisance Parameters\n", nuisance_params) - - -def process_systematics(templates_dir: str, sig_separate: bool): - print() - """Processses systematics based on whether signal and background JSONs are combined or not""" - if not sig_separate: - with open(f"{templates_dir}/systematics.json", "r") as f: - systematics = json.load(f) - - process_systematics_combined(systematics) # LP SF and trig effs. - else: - with open(f"{templates_dir}/backgrounds/systematics.json", "r") as f: - bg_systematics = json.load(f) - - sig_systs = {} - for sig_key in sig_keys: - with open(f"{templates_dir}/{hist_names[sig_key]}/systematics.json", "r") as f: - sig_systs[sig_key] = json.load(f) - - process_systematics_separate(bg_systematics, sig_systs) # LP SF and trig effs. - + model.renderCombine(out_dir) -def rebin_channels(templates: Dict, axis_name: str, mass_window: List[float]): - """Convert templates into single-bin hists per ABCD channel""" - rebinning_edges = [50] + mass_window + [250] # [0] [1e4] + with open(f"{out_dir}/model.pkl", "wb") as fout: + pickle.dump(model, fout, 2) # use python 2 compatible protocol - channels = {} - for region, template in templates.items(): - # rebin into [left sideband, mass window, right window] - rebinned = utils.rebin_hist(template, axis_name, rebinning_edges) - channels[region] = rebinned[..., 1] - # sum sidebands - channels[f"{region}_sidebands"] = rebinned[..., 0] + rebinned[..., 2] - return channels +def fill_yields(channels, channels_summed): + """Fill top-level datacard info for VBF""" + # dict storing all the substitutions for the datacard template + datacard_dict = { + "num_bins": len(channels), + "num_bgs": len(bg_keys), + "bins": join_with_padding(channels), + "observations": join_with_padding( + [channels_summed[channel][data_key].value for channel in channels] + ), + "binA": channels[0], + "binB": channels[1], + "binC": channels[2], + "binD": channels[3], + "obsB": channels_summed[channels[1]][data_key].value, + "obsC": channels_summed[channels[2]][data_key].value, + "obsD": channels_summed[channels[3]][data_key].value, + } -def get_channels(templates_dict: Dict, templates_summed: Dict, shape_var: ShapeVar): - """Convert templates into single-bin hists per ABCD channel""" + # collecting MC samples and yields + channel_bins_dict = { + "bins_x_processes": [], + "processes_per_bin": [], + "processes_index": [], + "processes_rates": [], + } - mass_window = [100, 150] - axis_name = shape_var.name + for channel in channels: + for i, key in enumerate(sig_keys + bg_keys + [qcd_data_key]): + channel_bins_dict["bins_x_processes"].append(channel) + channel_bins_dict["processes_index"].append(i + 1 - len(sig_keys)) + if key == qcd_data_key: + channel_bins_dict["processes_per_bin"].append(qcd_data_key) + channel_bins_dict["processes_rates"].append(1) + else: + channel_bins_dict["processes_per_bin"].append(mc_samples[key]) + channel_bins_dict["processes_rates"].append(channels_summed[channel][key].value) - channels_summed = rebin_channels(templates_summed, axis_name, mass_window) - channels_dict = {} - for key, templates in templates_dict.items(): - channels_dict[key] = rebin_channels(templates, axis_name, mass_window) + for key, arr in channel_bins_dict.items(): + datacard_dict[key] = join_with_padding(arr) - return channels_dict, channels_summed + return datacard_dict -def fill_regions( - model: rl.Model, - regions: List[str], - templates_dict: Dict, - templates_summed: Dict, - mc_samples: Dict[str, str], - nuisance_params: Dict[str, Syst], - nuisance_params_dict: Dict[str, rl.NuisanceParameter], - corr_year_shape_systs: Dict[str, Syst], - uncorr_year_shape_systs: Dict[str, Syst], - shape_systs_dict: Dict[str, rl.NuisanceParameter], - bblite: bool = True, - mX_bin: int = None, -): - """Fill samples per region including given rate, shape and mcstats systematics. - Ties "blinded" and "nonblinded" mc stats parameters together. +def createDatacardABCD(args, templates_dict, templates_summed, shape_vars): + # A, B, C, D (in order) + channels = ["pass", "pass_sidebands", "fail", "fail_sidebands"] # analogous to regions + channels_dict, channels_summed = get_channels(templates_dict, templates_summed, shape_vars[0]) - Args: - model (rl.Model): rhalphalib model - regions (List[str]): list of regions to fill - templates_dict (Dict): dictionary of all templates - templates_summed (Dict): dictionary of templates summed across years - mc_samples (Dict[str, str]): dict of mc samples and their names in the given templates -> card names - nuisance_params (Dict[str, Tuple]): dict of nuisance parameter names and tuple of their - (modifier, samples affected by it, value) - nuisance_params_dict (Dict[str, rl.NuisanceParameter]): dict of nuisance parameter names - and NuisanceParameter object - corr_year_shape_systs (Dict[str, Tuple]): dict of shape systs (correlated across years) - and tuple of their (name in cards, samples affected by it) - uncorr_year_shape_systs (Dict[str, Tuple]): dict of shape systs (unccorrelated across years) - and tuple of their (name in cards, samples affected by it) - shape_systs_dict (Dict[str, rl.NuisanceParameter]): dict of shape syst names and - NuisanceParameter object - pass_only (List[str]): list of systematics which are only applied in the pass region(s) - bblite (bool): use Barlow-Beeston-lite method or not (single mcstats param across MC samples) - mX_bin (int): if doing 2D fit (for resonant), which mX bin to be filled - """ + datacard_dict = fill_yields(channels, channels_summed) - for region in regions: - if mX_bin is None: - region_templates = templates_summed[region] - else: - region_templates = templates_summed[region][:, :, mX_bin] + for region in channels: + region_templates = channels_summed[region] pass_region = region.startswith("pass") - region_noblinded = region.split("Blinded")[0] - blind_str = "Blinded" if region.endswith("Blinded") else "" + region_nosidebands = region.split("_sidebands")[0] + sideband_str = "_sidebands" if region.endswith("_sidebands") else "" logging.info("starting region: %s" % region) - binstr = "" if mX_bin is None else f"mXbin{mX_bin}" - ch = rl.Channel(binstr + region.replace("_", "")) # can't have '_'s in name - model.addChannel(ch) for sample_name, card_name in mc_samples.items(): # don't add signals in fail regions # also skip resonant signals in pass blinded - they are ignored in the validation fits anyway if sample_name in sig_keys: - if not pass_region or (mX_bin is not None and region == "passBlinded"): + if not pass_region: # or (mX_bin is not None and region == "passBlinded"): logging.info(f"\nSkipping {sample_name} in {region} region\n") continue @@ -1065,62 +1028,51 @@ def fill_regions( continue logging.info("get templates for: %s" % sample_name) - - sample_template = region_templates[sample_name, :] - - stype = rl.Sample.SIGNAL if sample_name in sig_keys else rl.Sample.BACKGROUND - sample = rl.TemplateSample(ch.name + "_" + card_name, stype, sample_template) - - # # rate params per signal to freeze them for individual limits - # if stype == rl.Sample.SIGNAL and len(sig_keys) > 1: - # srate = rate_params[sample_name] - # sample.setParamEffect(srate, 1 * srate) + sample_template = region_templates[sample_name] # nominal values, errors - values_nominal = np.maximum(sample_template.values(), 0.0) + values_nominal = np.maximum(sample_template.value, 0.0) mask = values_nominal > 0 errors_nominal = np.ones_like(values_nominal) - errors_nominal[mask] = ( - 1.0 + np.sqrt(sample_template.variances()[mask]) / values_nominal[mask] - ) + if mask: + errors_nominal = 1.0 + np.sqrt(sample_template.variance) / values_nominal - logging.debug("nominal : {nominal}".format(nominal=values_nominal)) - logging.debug("error : {errors}".format(errors=errors_nominal)) + # no MC stats?? I removed it - if not bblite and args.mcstats: - # set mc stat uncs - logging.info("setting autoMCStats for %s in %s" % (sample_name, region)) - - # tie MC stats parameters together in blinded and "unblinded" region in nonresonant - region_name = region if args.resonant else region_noblinded - stats_sample_name = f"{CMS_PARAMS_LABEL}_{region_name}_{card_name}" - sample.autoMCStats( - sample_name=stats_sample_name, - # this function uses a different threshold convention from combine - threshold=np.sqrt(1 / args.mcstats_threshold), - epsilon=args.epsilon, - ) - - # rate systematics - for skey, syst in nuisance_params.items(): - if sample_name not in syst.samples or (not pass_region and syst.pass_only): - continue + # rate systematics + for skey, syst in nuisance_params.items(): + if sample_name not in syst.samples or (not pass_region and syst.pass_only): + continue logging.info(f"Getting {skey} rate") - - param = nuisance_params_dict[skey] + if skey == "CMS_bbWW_hadronic_triggerEffSF_uncorrelated": + logging.info( + f"\nSkipping rate systematics calc for {skey} of {sample_name} in {region} region\n" + ) + continue val, val_down = syst.value, syst.value_down if syst.diff_regions: - region_name = region if args.resonant else region_noblinded + region_name = region_noblinded val = val[region_name] val_down = val_down[region_name] if val_down is not None else val_down if syst.diff_samples: val = val[sample_name] val_down = val_down[sample_name] if val_down is not None else val_down - sample.setParamEffect(param, val, effect_down=val_down) + # sample.setParamEffect(param, val, effect_down=val_down) + print("513 rate systematics val, val down", val, val_down) + collected_data.append( + { + "type": "rate systematics", + "region": region, + "sample_name": sample_name, + "skey": skey, + "val": val, + "val_down": val_down, + } + ) # correlated shape systematics for skey, syst in corr_year_shape_systs.items(): @@ -1128,38 +1080,63 @@ def fill_regions( continue logging.info(f"Getting {skey} shapes") + if region == "pass_sidebands" or region == "fail_sidebands": + logging.info(f"\nSkipping shape systematics calc in {region} region\n") + # continue - if skey in jecs or skey in jmsr: - # JEC/JMCs saved as different "region" in dict - if mX_bin is None: - up_hist = templates_summed[f"{region_noblinded}_{skey}_up{blind_str}"][ - sample_name, : - ] - down_hist = templates_summed[f"{region_noblinded}_{skey}_down{blind_str}"][ - sample_name, : - ] + if ( + skey in jecs or skey in jmsr + ): # Here we are not using the channels_summed values since I am not sure if I can get 'pass_JES_up' in there... + # JEC/JMCs saved as different "region" in dict # notation is off here, check actual names to compare + # s1 = f"{region_noblinded}_{skey}_up{blind_str}" + + prefix, *suffix = region_noblinded.split("_") + + if suffix: # If there's a suffix like "sidebands" + suffix_str = f"_{suffix[0]}" else: - # regions names are different from different blinding strats - up_hist = templates_summed[f"{region}_{skey}_up"][sample_name, :, mX_bin] - down_hist = templates_summed[f"{region}_{skey}_down"][ - sample_name, :, mX_bin - ] + suffix_str = "" - values_up = up_hist.values() - values_down = down_hist.values() + up_hist = channels_summed[f"{prefix}_{skey}_up{blind_str}{suffix_str}"][ + sample_name + ] + down_hist = channels_summed[f"{prefix}_{skey}_down{blind_str}{suffix_str}"][ + sample_name + ] + + values_up = up_hist.value + values_down = down_hist.value else: # weight uncertainties saved as different "sample" in dict - values_up = region_templates[f"{sample_name}_{skey}_up", :].values() - values_down = region_templates[f"{sample_name}_{skey}_down", :].values() + values_up = region_templates[f"{sample_name}_{skey}_up"].value + values_down = region_templates[f"{sample_name}_{skey}_down"].value logger = logging.getLogger( "validate_shapes_{}_{}_{}".format(region, sample_name, skey) ) - effect_up, effect_down = get_effect_updown( - values_nominal, values_up, values_down, mask, logger + # effect_up, effect_down = get_effect_updown( values_nominal, values_up, values_down, mask, logger ) + effect_up = values_up / values_nominal + effect_down = values_down / values_nominal + + # sample.setParamEffect(shape_systs_dict[skey], effect_up, effect_down) + print( + "correlated shape systematics shape_systs_dict[skey], effect_up, effect_down", + shape_systs_dict, + skey, + effect_up, + effect_down, + ) + collected_data.append( + { + "type": "correlated shape systematics", + "region": region, + "sample_name": sample_name, + "skey": skey, + "effect_up": effect_up, + "effect_down": effect_down, + } ) - sample.setParamEffect(shape_systs_dict[skey], effect_up, effect_down) # uncorrelated shape systematics for skey, syst in uncorr_year_shape_systs.items(): @@ -1167,351 +1144,130 @@ def fill_regions( continue logging.info(f"Getting {skey} shapes") + if region == "pass_sidebands" or region == "fail_sidebands": + logging.info( + f"\nSkipping uncorrelated shape systematics calc in {region} region\n" + ) + # continue for year in years: if year not in syst.uncorr_years: continue values_up, values_down = get_year_updown( - templates_dict, + channels_dict, sample_name, region, region_noblinded, blind_str, year, skey, - mX_bin=mX_bin, + mX_bin=None, ) logger = logging.getLogger( "validate_shapes_{}_{}_{}".format(region, sample_name, skey) ) - effect_up, effect_down = get_effect_updown( - values_nominal, values_up, values_down, mask, logger + # effect_up, effect_down = get_effect_updown( values_nominal, values_up, values_down, mask, logger ) + effect_up = values_up / values_nominal + effect_down = values_down / values_nominal + # sample.setParamEffect( shape_systs_dict[f"{skey}_{year}"], effect_up, effect_down) + print( + "uncorrelated shape systematics (shape_systs_dict[fskey_year], effect_up, effect_down)", + shape_systs_dict, + f"{skey}_{year}", + effect_up, + effect_down, ) - sample.setParamEffect( - shape_systs_dict[f"{skey}_{year}"], effect_up, effect_down + collected_data.append( + { + "type": "uncorrelated shape systematics", + "region": region, + "sample_name": sample_name, + "skey": skey, + "effect_up": effect_up, + "effect_down": effect_down, + "year": year, + } ) - ch.addSample(sample) - - if bblite and args.mcstats: - # tie MC stats parameters together in blinded and "unblinded" region in nonresonant - channel_name = region if args.resonant else region_noblinded - ch.autoMCStats( - channel_name=f"{CMS_PARAMS_LABEL}_{channel_name}", - threshold=args.mcstats_threshold, - epsilon=args.epsilon, - ) - - # data observed - ch.setObservation(region_templates[data_key, :]) - - -def nonres_alphabet_fit( - model: rl.Model, - shape_vars: List[ShapeVar], - templates_summed: Dict, - scale: float = None, - min_qcd_val: float = None, -): - shape_var = shape_vars[0] - m_obs = rl.Observable(shape_var.name, shape_var.bins) - - # QCD overall pass / fail efficiency - qcd_eff = ( - templates_summed[f"pass"][qcd_key, :].sum().value - / templates_summed[f"fail"][qcd_key, :].sum().value - ) - - # transfer factor - tf_dataResidual = rl.BasisPoly( - f"{CMS_PARAMS_LABEL}_tf_dataResidual", - (shape_var.order,), - [shape_var.name], - basis="Bernstein", - limits=(-20, 20), - square_params=True, - ) - tf_dataResidual_params = tf_dataResidual(shape_var.scaled) - tf_params_pass = qcd_eff * tf_dataResidual_params # scale params initially by qcd eff - - # qcd params - qcd_params = np.array( - [ - rl.IndependentParameter(f"{CMS_PARAMS_LABEL}_tf_dataResidual_Bin{i}", 0) - for i in range(m_obs.nbins) - ] - ) - - for blind_str in ["", "Blinded"]: - # for blind_str in ["Blinded"]: - passChName = f"pass{blind_str}".replace("_", "") - failChName = f"fail{blind_str}".replace("_", "") - logging.info( - "setting transfer factor for pass region %s, fail region %s" % (passChName, failChName) - ) - failCh = model[failChName] - passCh = model[passChName] - - # sideband fail - # was integer, and numpy complained about subtracting float from it - initial_qcd = failCh.getObservation().astype(float) - for sample in failCh: - if args.resonant and sample.sampletype == rl.Sample.SIGNAL: - continue - logging.debug("subtracting %s from qcd" % sample._name) - initial_qcd -= sample.getExpectation(nominal=True) - - if np.any(initial_qcd < 0.0): - raise ValueError("initial_qcd negative for some bins..", initial_qcd) - - # idea here is that the error should be 1/sqrt(N), so parametrizing it as (1 + 1/sqrt(N))^qcdparams - # will result in qcdparams errors ~±1 - # but because qcd is poorly modelled we're scaling sigma scale - - sigmascale = 10 # to scale the deviation from initial - if scale is not None: - sigmascale *= scale - - scaled_params = ( - initial_qcd * (1 + sigmascale / np.maximum(1.0, np.sqrt(initial_qcd))) ** qcd_params - ) - - # add samples - fail_qcd = rl.ParametericSample( - f"{failChName}_{CMS_PARAMS_LABEL}_qcd_datadriven", - rl.Sample.BACKGROUND, - m_obs, - scaled_params, - ) - failCh.addSample(fail_qcd) - - pass_qcd = rl.TransferFactorSample( - f"{passChName}_{CMS_PARAMS_LABEL}_qcd_datadriven", - rl.Sample.BACKGROUND, - tf_params_pass, - fail_qcd, - min_val=min_qcd_val, - ) - passCh.addSample(pass_qcd) - - -def res_alphabet_fit( - model: rl.Model, - shape_vars: List[ShapeVar], - templates_summed: Dict, - scale: float = None, - min_qcd_val: float = None, -): - shape_var_mY, shape_var_mX = shape_vars - m_obs = rl.Observable(shape_var_mY.name, shape_var_mY.bins) - - # QCD overall pass / fail efficiency - qcd_eff = ( - templates_summed[f"pass"][qcd_key, ...].sum().value - / templates_summed[f"fail"][qcd_key, ...].sum().value - ) - - # transfer factor - tf_dataResidual = rl.BasisPoly( - f"{CMS_PARAMS_LABEL}_tf_dataResidual", - (shape_var_mX.order, shape_var_mY.order), - [shape_var_mX.name, shape_var_mY.name], - basis="Bernstein", - limits=(-20, 20), - square_params=True, - ) - - # based on https://github.com/nsmith-/rhalphalib/blob/9472913ef0bab3eb47bc942c1da4e00d59fb5202/tests/test_rhalphalib.py#L38 - mX_scaled_grid, mY_scaled_grid = np.meshgrid( - shape_var_mX.scaled, shape_var_mY.scaled, indexing="ij" - ) - # numpy array of - tf_dataResidual_params = tf_dataResidual(mX_scaled_grid, mY_scaled_grid) - tf_params_pass = qcd_eff * tf_dataResidual_params # scale params initially by qcd eff + sig_key = "qqHH_CV_1_C2V_0_kl_1_HHbbVV" - for mX_bin in range(len(shape_var_mX.pts)): - # qcd params - qcd_params = np.array( - [ - rl.IndependentParameter(f"{CMS_PARAMS_LABEL}_qcdparam_mXbin{mX_bin}_mYbin{i}", 0) - for i in range(m_obs.nbins) - ] - ) + # Process collected_data to compute systematics argument: + systematics_strings = {} + sig_key = "qqHH_CV_1_C2V_0_kl_1_HHbbVV" - for blind_str in ["", "Blinded"]: - # for blind_str in ["Blinded"]: - passChName = f"mXbin{mX_bin}pass{blind_str}".replace("_", "") - failChName = f"mXbin{mX_bin}fail{blind_str}".replace("_", "") - logging.info( - "setting transfer factor for pass region %s, fail region %s" - % (passChName, failChName) - ) - failCh = model[failChName] - passCh = model[passChName] + # Iterate through the collected_data + for data in collected_data: + sample = data["sample_name"] + systematics_type = data["type"] + skey = data["skey"] - # sideband fail - # was integer, and numpy complained about subtracting float from it - initial_qcd = failCh.getObservation().astype(float) - for sample in failCh: - logging.debug("subtracting %s from qcd" % sample._name) - initial_qcd -= sample.getExpectation(nominal=True) + if ( + systematics_type != "rate systematics" and sample != sig_key + ): # if shaped uncertainty then only look at signal. assuming only one signal matters + continue - if np.any(initial_qcd < 0.0): - # raise ValueError("initial_qcd negative for some bins..", initial_qcd) - logging.warning(f"initial_qcd negative for some bins... {initial_qcd}") - initial_qcd[initial_qcd < 0] = 0 + is_rs = systematics_type == "rate systematics" + val = data.get("val", None) + val_down = data.get("val_down", None) + region = data["region"] + effect_up = data.get("effect_up", None) + effect_down = data.get("effect_down", None) - # idea here is that the error should be 1/sqrt(N), so parametrizing it as (1 + 1/sqrt(N))^qcdparams - # will result in qcdparams errors ~±1 - # but because qcd is poorly modelled we're scaling sigma scale + # initialize list of systematics + if skey not in systematics_strings: + systematics_strings[skey] = ["-"] * 2 * len(channels) - sigmascale = 10 # to scale the deviation from initial - if scale is not None: - sigmascale *= scale + index = channels.index(region) + if is_rs: # if rate scale, then apply uncertainty to sig and bck + if val_down != None: + systematics_strings[skey][2 * index] = f"{{{val},{val_down}}}" + systematics_strings[skey][2 * index + 1] = f"{{{val},{val_down}}}" + else: + systematics_strings[skey][2 * index] = val + systematics_strings[skey][2 * index + 1] = val + else: + systematics_strings[skey][2 * index] = f"{{{effect_up},{effect_down}}}" - scaled_params = ( - initial_qcd * (1 + sigmascale / np.maximum(1.0, np.sqrt(initial_qcd))) ** qcd_params - ) - # scaled_params = initial_qcd * (1.1 ** qcd_params) + # Format the resulting lists into strings + syst_list = [] + for skey, values in systematics_strings.items(): + syst_list.append(join_with_padding([skey, "lnN", *values])) - # add samples - fail_qcd = rl.ParametericSample( - f"{failChName}_{CMS_PARAMS_LABEL}_qcd_datadriven", - rl.Sample.BACKGROUND, - m_obs, - scaled_params, - ) - failCh.addSample(fail_qcd) + syst_string = "\n".join(syst_list) - pass_qcd = rl.TransferFactorSample( - f"{passChName}_{CMS_PARAMS_LABEL}_qcd_datadriven", - rl.Sample.BACKGROUND, - tf_params_pass[mX_bin, :], - fail_qcd, - min_val=min_qcd_val, - ) - passCh.addSample(pass_qcd) + # fill datacard with args + with open("datacard.templ.txt", "r") as f: + templ = Template(f.read()) + out_file = f"/home/users/annava/CMSSW_12_3_4/src/HiggsAnalysis/CombinedLimit/datacards/datacard.templ_{sig_key}.txt" + with open(out_file, "w") as f: + f.write(templ.substitute(datacard_dict)) -def _shape_checks(values_up, values_down, values_nominal, effect_up, effect_down, logger): - norm_up = np.sum(values_up) - norm_down = np.sum(values_down) - norm_nominal = np.sum(values_nominal) - prob_up = values_up / norm_up - prob_down = values_down / norm_down - prob_nominal = values_nominal / norm_nominal - shapeEffect_up = np.sum( - np.abs(prob_up - prob_nominal) / (np.abs(prob_up) + np.abs(prob_nominal)) - ) - shapeEffect_down = np.sum( - np.abs(prob_down - prob_nominal) / (np.abs(prob_down) + np.abs(prob_nominal)) +def main(args): + # templates per region per year, templates per region summed across years + templates_dict, templates_summed = get_templates( + args.templates_dir, years, args.sig_separate, args.scale_templates, args.combine_lasttwo ) - valid = True - if np.allclose(effect_up, 1.0) and np.allclose(effect_down, 1.0): - valid = False - logger.warning("No shape effect") - elif np.allclose(effect_up, effect_down): - valid = False - logger.warning("Up is the same as Down, but different from nominal") - elif np.allclose(effect_up, 1.0) or np.allclose(effect_down, 1.0): - valid = False - logger.warning("Up or Down is the same as nominal (one-sided)") - elif shapeEffect_up < 0.001 and shapeEffect_down < 0.001: - valid = False - logger.warning("No genuine shape effect (just norm)") - elif (norm_up > norm_nominal and norm_down > norm_nominal) or ( - norm_up < norm_nominal and norm_down < norm_nominal - ): - valid = False - logger.warning("Up and Down vary norm in the same direction") - # print("Norm nominal", norm_nominal) - # print("Norm up", norm_up) - # print("Norm down", norm_down) - # print("values nominal", values_nominal) - # print("values up", values_up) - # print("values down", values_down) - - # if valid: - # logger.info("Shapes are valid") - - -def get_effect_updown(values_nominal, values_up, values_down, mask, logger): - effect_up = np.ones_like(values_nominal) - effect_down = np.ones_like(values_nominal) - - mask_up = mask & (values_up >= 0) - mask_down = mask & (values_down >= 0) - - effect_up[mask_up] = values_up[mask_up] / values_nominal[mask_up] - effect_down[mask_down] = values_down[mask_down] / values_nominal[mask_down] - - zero_up = values_up == 0 - zero_down = values_down == 0 - - effect_up[mask_up & zero_up] = values_nominal[mask_up & zero_up] * args.epsilon - effect_down[mask_down & zero_down] = values_nominal[mask_down & zero_down] * args.epsilon - - _shape_checks(values_up, values_down, values_nominal, effect_up, effect_down, logger) - - logging.debug("nominal : {nominal}".format(nominal=values_nominal)) - logging.debug("effect_up : {effect_up}".format(effect_up=effect_up)) - logging.debug("effect_down: {effect_down}".format(effect_down=effect_down)) - - return effect_up, effect_down - - -def get_year_updown( - templates_dict, sample, region, region_noblinded, blind_str, year, skey, mX_bin=None -): - """ - Return templates with only the given year's shapes shifted up and down by the ``skey`` systematic. - Returns as [up templates, down templates] - """ - updown = [] - - for shift in ["up", "down"]: - sshift = f"{skey}_{shift}" - # get nominal templates for each year - templates = {y: templates_dict[y][region][sample, ...] for y in years} - # replace template for this year with the shifted tempalte - if skey in jecs or skey in jmsr: - # JEC/JMCs saved as different "region" in dict - reg_name = ( - f"{region_noblinded}_{sshift}{blind_str}" - if mX_bin is None - else f"{region}_{sshift}" - ) - - if args.vbf: - prefix, *suffix = region_noblinded.split("_") - - if suffix: # If there's a suffix like "sidebands" - suffix_str = f"_{suffix[0]}" - else: - suffix_str = "" - reg_name = f"{prefix}_{sshift}{blind_str}{suffix_str}" - # print("templates",templates,year,reg_name,sample,templates_dict[year][reg_name][sample , ...]) - templates[year] = templates_dict[year][reg_name][sample, ...] - else: - templates[year] = templates_dict[year][reg_name][sample, :, ...] - else: - # weight uncertainties saved as different "sample" in dict - templates[year] = templates_dict[year][region][f"{sample}_{sshift}", ...] + # TODO: check if / how to include signal trig eff uncs. (rn only using bg uncs.) + process_systematics(args.templates_dir, args.sig_separate) - if mX_bin is not None: - for year, template in templates.items(): - templates[year] = template[:, mX_bin] + # random template from which to extract shape vars + sample_templates: Hist = templates_summed[list(templates_summed.keys())[0]] - # sum templates with year's template replaced with shifted # might need to adjust the dimensions of this if args.vbf - if args.vbf: - updown.append(list(templates.values())[0].value) - else: - updown.append(sum(list(templates.values())).values()) + # [mH(bb)] for nonresonant, [mY, mX] for resonant + shape_vars = [ + ShapeVar(name=axis.name, bins=axis.edges, order=args.nTF[i]) + for i, axis in enumerate(sample_templates.axes[1:]) + ] - return updown + dc_args = [args, templates_dict, templates_summed, shape_vars] + if args.vbf: + createDatacardABCD(*dc_args) + else: + createDatacardAlphabet(*dc_args) main(args) diff --git a/src/HHbbVV/postprocessing/datacard.templ.txt b/src/HHbbVV/postprocessing/datacard.templ.txt index 201a3956..bbcdace7 100644 --- a/src/HHbbVV/postprocessing/datacard.templ.txt +++ b/src/HHbbVV/postprocessing/datacard.templ.txt @@ -1,14 +1,14 @@ -imax $num_bins +imax $num_bins jmax $num_bgs kmax * --------------- bin $bins observation $observations ------------------------------ -bin $bins_x_processes -process $processes_per_bin -process $processes_index -rate $processes_rates +bin $bins_x_processes +process $processes_per_bin +process $processes_index +rate $processes_rates ------------------------------ single_A rateParam $binA bkg (@0*@2/@1) single_B,single_C,single_D single_B rateParam $binB bkg $obsB diff --git a/src/HHbbVV/postprocessing/datacardHelpers.py b/src/HHbbVV/postprocessing/datacardHelpers.py new file mode 100644 index 00000000..3f1cf9f7 --- /dev/null +++ b/src/HHbbVV/postprocessing/datacardHelpers.py @@ -0,0 +1,297 @@ +from typing import Dict, List, Tuple, Union +from dataclasses import dataclass, field +import logging + +import numpy as np +import hist +from hist import Hist +import utils + + +################################################# +# Common +################################################# + + +@dataclass +class Syst: + """For storing info about systematics""" + + name: str = None + prior: str = None # e.g. "lnN", "shape", etc. + + # float if same value in all regions/samples, dictionary of values per region/sample if not + # if both, region should be the higher level of the dictionary + value: Union[float, Dict[str, float]] = None + value_down: Union[float, Dict[str, float]] = None # if None assumes symmetric effect + # if the value is different for different regions or samples + diff_regions: bool = False + diff_samples: bool = False + + samples: List[str] = None # samples affected by it + # in case of uncorrelated unc., which years to split into + uncorr_years: List[str] = field(default_factory=lambda: years) + pass_only: bool = False # is it applied only in the pass regions + + def __post_init__(self): + if isinstance(self.value, dict) and not (self.diff_regions or self.diff_samples): + raise RuntimeError( + f"Value for systematic is a dictionary but neither ``diff_regions`` nor ``diff_samples`` is set." + ) + + +@dataclass +class ShapeVar: + """For storing and calculating info about variables used in fit""" + + name: str = None + bins: np.ndarray = None # bin edges + order: int = None # TF order + + def __post_init__(self): + # use bin centers for polynomial fit + self.pts = self.bins[:-1] + 0.5 * np.diff(self.bins) + # scale to be between [0, 1] + self.scaled = (self.pts - self.bins[0]) / (self.bins[-1] - self.bins[0]) + + +def add_bool_arg(parser, name, help, default=False, no_name=None): + """Add a boolean command line argument for argparse""" + varname = "_".join(name.split("-")) # change hyphens to underscores + group = parser.add_mutually_exclusive_group(required=False) + group.add_argument("--" + name, dest=varname, action="store_true", help=help) + if no_name is None: + no_name = "no-" + name + no_help = "don't " + help + else: + no_help = help + group.add_argument("--" + no_name, dest=varname, action="store_false", help=no_help) + parser.set_defaults(**{varname: default}) + + +################################################# +# Template manipulation +################################################# + + +def combine_last_two_bins(templates_dict: Dict, years: List[str]): + for year in years: + for region in templates_dict[year]: + templates_dict[year][region] = utils.rebin_hist( + templates_dict[year][region], + "bbFatJetParticleNetMass", + list(range(50, 240, 10)) + [250], + ) + + +def rem_neg(template_dict: Dict): + for sample, template in template_dict.items(): + template.values()[template.values() < 0] = 0 + + return template_dict + + +def _match_samples(template: Hist, match_template: Hist) -> Hist: + """Temporary solution for case where 2018 templates don't have L1 prefiring in their axis + + Args: + template (Hist): template to which samples may need to be added + match_template (Hist): template from which to extract extra samples + """ + samples = list(match_template.axes[0]) + + # if template already has all the samples, don't do anything + if list(template.axes[0]) == samples: + return template + + # otherwise remake template with samples from ``match_template`` + h = hist.Hist(*match_template.axes, storage="weight") + + for sample in template.axes[0]: + sample_index = np.where(np.array(list(h.axes[0])) == sample)[0][0] + h.view()[sample_index] = template[sample, ...].view() + + return h + + +def sum_templates(template_dict: Dict, years: List[str]): + """Sum templates across years""" + + ttemplate = list(template_dict.values())[0] # sample templates to extract values from + combined = {} + + for region in ttemplate: + thists = [] + + for year in years: + # temporary solution for case where 2018 templates don't have L1 prefiring in their axis + thists.append( + _match_samples(template_dict[year][region], template_dict["2017"][region]) + ) + + combined[region] = sum(thists) + + return combined + + +def combine_templates( + bg_templates: Dict[str, Hist], sig_templates: List[Dict[str, Hist]] +) -> Dict[str, Hist]: + """ + Combines BG and signal templates into a single Hist (per region). + + Args: + bg_templates (Dict[str, Hist]): dictionary of region -> Hist + sig_templates (List[Dict[str, Hist]]): list of dictionaries of region -> Hist for each + signal samples + """ + ctemplates = {} + + for region, bg_template in bg_templates.items(): + # combined sig + bg samples + csamples = list(bg_template.axes[0]) + [ + s for sig_template in sig_templates for s in list(sig_template[region].axes[0]) + ] + + # new hist with all samples + ctemplate = Hist( + hist.axis.StrCategory(csamples, name="Sample"), + *bg_template.axes[1:], + storage="weight", + ) + + # add background hists + for sample in bg_template.axes[0]: + sample_key_index = np.where(np.array(list(ctemplate.axes[0])) == sample)[0][0] + ctemplate.view(flow=True)[sample_key_index, ...] = bg_template[sample, ...].view( + flow=True + ) + + # add signal hists + for st in sig_templates: + sig_template = st[region] + for sample in sig_template.axes[0]: + sample_key_index = np.where(np.array(list(ctemplate.axes[0])) == sample)[0][0] + ctemplate.view(flow=True)[sample_key_index, ...] = sig_template[sample, ...].view( + flow=True + ) + + ctemplates[region] = ctemplate + + return ctemplates + + +################################################# +# Shape Fills +################################################# + + +def _shape_checks(values_up, values_down, values_nominal, effect_up, effect_down, logger): + norm_up = np.sum(values_up) + norm_down = np.sum(values_down) + norm_nominal = np.sum(values_nominal) + prob_up = values_up / norm_up + prob_down = values_down / norm_down + prob_nominal = values_nominal / norm_nominal + shapeEffect_up = np.sum( + np.abs(prob_up - prob_nominal) / (np.abs(prob_up) + np.abs(prob_nominal)) + ) + shapeEffect_down = np.sum( + np.abs(prob_down - prob_nominal) / (np.abs(prob_down) + np.abs(prob_nominal)) + ) + + valid = True + if np.allclose(effect_up, 1.0) and np.allclose(effect_down, 1.0): + valid = False + logger.warning("No shape effect") + elif np.allclose(effect_up, effect_down): + valid = False + logger.warning("Up is the same as Down, but different from nominal") + elif np.allclose(effect_up, 1.0) or np.allclose(effect_down, 1.0): + valid = False + logger.warning("Up or Down is the same as nominal (one-sided)") + elif shapeEffect_up < 0.001 and shapeEffect_down < 0.001: + valid = False + logger.warning("No genuine shape effect (just norm)") + elif (norm_up > norm_nominal and norm_down > norm_nominal) or ( + norm_up < norm_nominal and norm_down < norm_nominal + ): + valid = False + logger.warning("Up and Down vary norm in the same direction") + + +def get_effect_updown(values_nominal, values_up, values_down, mask, logger): + effect_up = np.ones_like(values_nominal) + effect_down = np.ones_like(values_nominal) + + mask_up = mask & (values_up >= 0) + mask_down = mask & (values_down >= 0) + + effect_up[mask_up] = values_up[mask_up] / values_nominal[mask_up] + effect_down[mask_down] = values_down[mask_down] / values_nominal[mask_down] + + zero_up = values_up == 0 + zero_down = values_down == 0 + + effect_up[mask_up & zero_up] = values_nominal[mask_up & zero_up] * args.epsilon + effect_down[mask_down & zero_down] = values_nominal[mask_down & zero_down] * args.epsilon + + _shape_checks(values_up, values_down, values_nominal, effect_up, effect_down, logger) + + logging.debug("nominal : {nominal}".format(nominal=values_nominal)) + logging.debug("effect_up : {effect_up}".format(effect_up=effect_up)) + logging.debug("effect_down: {effect_down}".format(effect_down=effect_down)) + + return effect_up, effect_down + + +################################################# +# VBF +################################################# + + +def join_with_padding(items, padding: int = 36): + """Joins items into a string, padded by ``padding`` spaces""" + ret = f"{{:<{padding}}}" * len(items) + return ret.format(*items) + + +def rebin_channels(templates: Dict, axis_name: str, mass_window: List[float]): + """Convert templates into single-bin hists per ABCD channel""" + rebinning_edges = [50] + mass_window + [250] # [0] [1e4] + + channels = {} + for region, template in templates.items(): + # rebin into [left sideband, mass window, right window] + rebinned = utils.rebin_hist(template, axis_name, rebinning_edges) + channels[region] = rebinned[..., 1] + # sum sidebands + channels[f"{region}_sidebands"] = rebinned[..., 0] + rebinned[..., 2] + + return channels + + +def get_channels(templates_dict: Dict, templates_summed: Dict, shape_var: ShapeVar): + """Convert templates into single-bin hists per ABCD channel""" + + mass_window = [100, 150] + axis_name = shape_var.name + + channels_summed = rebin_channels(templates_summed, axis_name, mass_window) + channels_dict = {} + for key, templates in templates_dict.items(): + channels_dict[key] = rebin_channels(templates, axis_name, mass_window) + + return channels_dict, channels_summed + + +################################################# +# Resonant +################################################# + + +def mxmy(sample): + mY = int(sample.split("-")[-1]) + mX = int(sample.split("NMSSM_XToYHTo2W2BTo4Q2B_MX-")[1].split("_")[0]) + + return (mX, mY) diff --git a/src/HHbbVV/postprocessing/templates/23Oct3VBF/2017_templates.pkl b/src/HHbbVV/postprocessing/templates/23Oct3VBF/2017_templates.pkl new file mode 100644 index 0000000000000000000000000000000000000000..938af0306f9f2dae153658476d8011e072e74b5f GIT binary patch literal 392929 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

$X_|B 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

W8JTcO}NC@-`#heU2UvYnxrP9>M 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