def test_gen_fs_mc_stack_n_data_sum(self): res = gen.fs_mc_stack_n_data_sum({"name": "histo"}) mc, data = res.next() # correct instances self.assertTrue(isinstance(mc, StackWrapper)) self.assertTrue(isinstance(data, HistoWrapper)) # ... of equal lumi (from data) self.assertEqual(mc.lumi, settings.data_samples()["tt"].lumi) self.assertEqual(data.lumi, settings.data_samples()["tt"].lumi) # check stacking order by history h = str(mc.history) self.assertTrue(h.index("ttgamma") < h.index("zjets")) settings.stacking_order.reverse() mc, data = res.next() h = str(mc.history) self.assertTrue(h.index("zjets") < h.index("ttgamma"))
def test_gen_fs_mc_stack_n_data_sum(self): res = gen.fs_mc_stack_n_data_sum({"name": "histo"}) mc, data = res.next() # correct instances self.assertTrue(isinstance(mc, StackWrapper)) self.assertTrue(isinstance(data, HistoWrapper)) # ... of equal lumi (from data) self.assertEqual(mc.lumi, settings.data_samples()["tt"].lumi) self.assertEqual(data.lumi, settings.data_samples()["tt"].lumi) # check stacking order by history h = str(mc.history) self.assertTrue(h.index("ttgamma") < h.index("zjets")) settings.stacking_order.reverse() mc, data = res.next() h = str(mc.history) self.assertTrue(h.index("zjets") < h.index("ttgamma"))
def run(self): self.configure() if not self.n_sig_ttgam_wrp: self.message("WARNING Did not find result in post_proc_dict. Skipping...") return # store results in wrapper r = copy.deepcopy(self.n_sig_ttgam_wrp) r.name = self.name self.result = r # prepare mc counts class counts(object): pass c = counts() c.sig_pre = 0. c.sig_fid = 0. c.sig_post = 0. c.bkg_pre = 0. c.bkg_post = 0. c.tt_pre = 0. c.tt_post = 0 for smp in settings.mc_samples().itervalues(): legend = smp.legend if legend == "t#bar{t}#gamma (Signal)": c.sig_pre += smp.log_event_counts[self.get_sig_count_name(self.pre_count_name)] / smp.lumi c.sig_fid += smp.log_event_counts[self.get_sig_count_name(self.fid_count_name)] / smp.lumi c.sig_post += smp.log_event_counts[self.get_sig_count_name(self.post_count_name)] / smp.lumi else: c.bkg_pre += smp.log_event_counts[self.pre_count_name] / smp.lumi c.bkg_post += smp.log_event_counts[self.post_count_name] / smp.lumi if legend == "t#bar{t} inclusive": c.tt_pre += smp.log_event_counts[self.pre_count_name] / smp.lumi c.tt_post += smp.log_event_counts[self.post_count_name] / smp.lumi data_lumi_sum = settings.data_lumi_sum() for k in c.__dict__.keys(): c.__dict__[k] *= data_lumi_sum # prepare data counts c.data_pre = 0. c.data_post = 0. for smp in settings.data_samples().itervalues(): c.data_pre += smp.log_event_counts[self.pre_count_name] c.data_post += smp.log_event_counts[self.post_count_name] # selection performance r.eff_gamma = c.sig_post / c.sig_fid r.eff_gamma_fid = c.sig_fid / c.sig_pre r.pur_tt = (c.tt_pre + c.sig_pre) / (c.bkg_pre + c.sig_pre) r.N_presel_data = c.data_pre r.N_sel_data = c.data_post r.StoB_gamma = c.sig_post / c.bkg_post r.StoB_presel = c.tt_pre / (c.bkg_pre - c.tt_pre) # background-substracted number of ttgamma signal events # r.n_sig_ttgam = self.n_sig_ttgam_wrp.n_sig_ttgam # R_fid R_fid_denom = r.eff_gamma * r.N_presel_data * r.pur_tt r.R_fid = r.n_sig_ttgam / R_fid_denom r.R_fid_err_stat= r.n_sig_ttgam_err / R_fid_denom # R R_denom = r.eff_gamma_fid * r.eff_gamma * r.N_presel_data * r.pur_tt r.R = r.n_sig_ttgam / R_denom r.R_err_stat = r.n_sig_ttgam_err / R_denom # xsec r.xsec = r.R * settings.ttbar_xsec_cms r.xsec_err_stat = r.xsec * r.R_err_stat / r.R self.message(str(r))
def prepare_for_systematic(self): mc_samples = settings.mc_samples().keys() da_samples = settings.data_samples().keys() pu_samples = list(s + "_TrigMinus" for s in mc_samples) settings.active_samples = pu_samples + da_samples super(SysTrigMinus, self).prepare_for_systematic()
def prepare_for_systematic(self): mc_samples = settings.mc_samples().keys() da_samples = settings.data_samples().keys() btag_samples = list(s + "_BTagWeightUDSGPlus" for s in mc_samples) settings.active_samples = btag_samples + da_samples super(SysBTagWeightUDSGPlus, self).prepare_for_systematic()
def get_shilp_counts(self, c): for smp in settings.data_samples().itervalues(): c.tight += smp.log_event_counts[self.tight_cnt] c.shilp += smp.log_event_counts[self.shilp_cnt]