diff --git a/tasks/HIG21005.py b/tasks/HIG21005.py index ba98d922a7d19374940d114b3d6586e2ecce43cc..e50eb51a4a90e0082f8d26ad4ffd278675dc865d 100644 --- a/tasks/HIG21005.py +++ b/tasks/HIG21005.py @@ -1259,3 +1259,87 @@ class ThesisbbWWSL(AN20119): f"rsync -r vispa:{self.output().path}/ </path/to/AN-20-119>/figures/nonresonant/results", sep="\n\t", ) + + +class CheckSR(ThesisbbWWSL): + # Check needed during CWR + # run with: law run CheckSR --version prod41 --recipe tth --model-version sr_check_01 --DatacardProducer-model-version approval --workers 12 + analyses = ("bbww_sl", "bbww_dl") + + def requires(self): + reqs = {} + reqs["dnn_outputs_postfit"] = [] + reqs["fits"] = [] + reqs["systematic_uncertainties"] = [] + + postfit_params = dict( + year="run2", + analyses=["bbww_sl", "bbww_dl"], + process_group=["compact"], + fit_style="preandpostfit", + unblind=True, + categories_tags={"fit", "signal"}, + ) + fit_params = dict( + fit_version="prod41", + fit_analyses=["bbww_sl", "bbww_dl"], + fit_model_version=self.model_version, + fit_years=("2016", "2017", "2018"), + fit_categories_tags={"fit", "signal"}, + ) + limit_params = dict( + limit_version="prod41", + limit_analyses=["bbww_sl", "bbww_dl"], + limit_model_version=self.model_version, + limit_statmodel="StatModel", + limit_categories_tags={"fit", "signal"}, + ) + plot_params = dict( + blind_thresh=0, + log_scale=True, + scale_signal_to_upper_limit=True, + cms_label="private", + ) + + # DNN Outputs Postift + reqs["dnn_outputs_postfit"].append( + PlotPostfitShapesFromWorkspace.req( + self, + analysis_choice="bbww_sl", + postfit_unc_frequentist_toys=True, + **postfit_params, + **plot_params, + **fit_params, + **limit_params, + ) + ) + reqs["dnn_outputs_postfit"].append( + PlotPostfitShapesFromWorkspace.req( + self, + analysis_choice="bbww_dl", + postfit_unc_frequentist_toys=True, + **postfit_params, + **plot_params, + **fit_params, + **limit_params, + ) + ) + + # Fit results + combine_params = dict( + analyses=["bbww_sl", "bbww_dl"], + cms_label="private", + version="prod41", + model_version=self.model_version, + categories_tags={"fit", "signal"}, + ) + + # fmt: off + # limits @SM + reqs["fits"].append(PlotUpperLimitsAtPoint.req(self, poi="r", unblind=True, **combine_params)) + reqs["fits"].append(PlotUpperLimitsAtPoint.req(self, poi="r_qqhh", unblind=True, **combine_params)) + + # combined pulls + reqs["fits"].append(PlotPullsAndImpactsAN20119.req(self, unblind=True, **combine_params)) + + return reqs