コード例 #1
0
    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"))
コード例 #2
0
    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"))
コード例 #3
0
ファイル: plots_xsec.py プロジェクト: TillArndt/MyPackage
    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))
コード例 #4
0
ファイル: sys_uncert.py プロジェクト: HeinerTholen/MyPackage
 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()
コード例 #5
0
ファイル: sys_uncert.py プロジェクト: HeinerTholen/MyPackage
 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()
コード例 #6
0
 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]