From 5f2854bb7fb227e7a8725a50043046cbb2b26166 Mon Sep 17 00:00:00 2001
From: Felix Metzner <felixmetzner@outlook.com>
Date: Thu, 18 Apr 2024 21:04:12 +0200
Subject: [PATCH] Fixing bug in sys shape overview plots caused by not skipping
 irrelevant compontents.

---
 .../dedicated_fit_approach/dedicated_fit_routine.py |  2 +-
 .../dedicated_fit_approach/plotting_tools.py        | 13 ++++++++++++-
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/rdstar/offline_analysis/fitting/dedicated_fit_approach/dedicated_fit_routine.py b/rdstar/offline_analysis/fitting/dedicated_fit_approach/dedicated_fit_routine.py
index f6e0ffef6..946c12d8e 100644
--- a/rdstar/offline_analysis/fitting/dedicated_fit_approach/dedicated_fit_routine.py
+++ b/rdstar/offline_analysis/fitting/dedicated_fit_approach/dedicated_fit_routine.py
@@ -1217,7 +1217,7 @@ class RDStarFitEvaluator:
             normed_base_shape=fit_instance.template_shapes,
             relative_shape_error=fit_instance.lepton_id_rel_shape_sys_uncert_matrix,
             pure_bin_counts=fit_instance.squared_template_stat_error,
-            components_to_consider=("BpDzl", "BzDml", "BpDzSl", "BzDmSl", "BBbarBKG_in_cB", "BBbarBKG_in_nB"),
+            components_to_consider=None,
             scale_factor=scale_factor,
             plot_subsets=plot_subsets,
         )
diff --git a/rdstar/offline_analysis/fitting/dedicated_fit_approach/plotting_tools.py b/rdstar/offline_analysis/fitting/dedicated_fit_approach/plotting_tools.py
index ffa89bfeb..69985e778 100644
--- a/rdstar/offline_analysis/fitting/dedicated_fit_approach/plotting_tools.py
+++ b/rdstar/offline_analysis/fitting/dedicated_fit_approach/plotting_tools.py
@@ -535,7 +535,12 @@ class SystematicsShapePlotter:
         self,
         reco_ch_info: RecoChannelInfo,
         component_info: ComponentInfo,
+        components_to_consider: Optional[Tuple[str, ...]],
     ) -> bool:
+        if components_to_consider is not None:
+            if component_info.name not in components_to_consider:
+                return True
+
         ch_suffixes: Tuple[str, ...] = tuple(set(self._reco_ch_name_to_charge_suffix.values()))
         if not any(component_info.name.endswith(ch_suffix) for ch_suffix in ch_suffixes):
             return False
@@ -587,7 +592,11 @@ class SystematicsShapePlotter:
             assert len(axes.shape) == 1, (len(axes.shape), axes.shape)
 
         for comp_id, component in enumerate(self.fit_components):
-            if self._skip_this_component(reco_ch_info=reco_ch_info, component_info=component):
+            if self._skip_this_component(
+                reco_ch_info=reco_ch_info,
+                component_info=component,
+                components_to_consider=sys_shape_info.components_to_consider,
+            ):
                 continue
 
             normed_base_shape: np.ndarray = sys_shape_info.normed_base_shape[:, comp_id]
@@ -653,6 +662,8 @@ class SystematicsShapePlotter:
             (KITColors.kit_green, down_sys, "Down/Nom"),
         ]
 
+        ax.hlines(y=0.0, xmin=bin_edges[0], xmax=bin_edges[-1], linestyles="--", lw=1.0, color=KITColors.kit_black)
+
         for h_color, h_weights, h_label in hist_plot_infos:
             ax.hist(
                 x=bin_mids,
-- 
GitLab