sample_sums[data.title] += data samples = [] for sample in datacard.processes: histo = shape_dir.Get(sample) if sample in signals: histo.Scale(sig_yields[cat_name][sample]) if sample not in sample_sums: sample_sums[sample] = histo.Clone() else: sample_sums[sample] += histo samples.append(histo) samples.sort(key=ordering) stack = plotter.create_stack(*samples, sort=False) legend = LegendDefinition(position='NE') plotter.overlay_and_compare( [stack], data, writeTo=cat_name, legend_def = legend, xtitle='discriminant', ytitle='Events', method='ratio' ) samples = [j for i, j in sample_sums.iteritems() if i <> 'data_obs' if i <> 'postfit S+B'] data = sample_sums['data_obs'] samples.sort(key=ordering) plotter.overlay_and_compare(
sample_sums[data.title] = data.Clone() sample_sums['postfit S+B'] = hsum.Clone() else: sample_sums[data.title] += data sample_sums['postfit S+B'] += hsum sample_names = [i.name for i in cat_dir.keys() if not i.name.startswith('total')] samples = [fix_binning(cat_dir.Get(i), data) for i in sample_names] for i, j in zip(sample_names, samples): if i not in sample_sums: sample_sums[i] = j.Clone() else: sample_sums[i] += j samples.sort(key=ordering) stack = plotter.create_stack(*samples, sort=False) legend = LegendDefinition(position='NE') plotter.overlay_and_compare( [stack, hsum], data, writeTo=cat_name, legend_def = legend, xtitle='discriminant', ytitle='Events', method='ratio' ) samples = [j for i, j in sample_sums.iteritems() if i <> 'data_obs' if i <> 'postfit S+B'] samples.sort(key=ordering) data = sample_sums['data_obs'] hsum = sample_sums['postfit S+B']