def test_setitem(self):
     cuts_datacards = Cuts(
         VVT='(l1_gen_match == 5 && l2_gen_match == 5)',
         VVJ='!(l1_gen_match == 5 && l2_gen_match == 5)',
     )
     cuts_datacards['VV'] = cuts_datacards['VVT'] | cuts_datacards['VVJ']
     cuts_datacards_VV = Cut(
         '((l1_gen_match == 5 && l2_gen_match == 5)) || (!(l1_gen_match == 5 && l2_gen_match == 5))'
     )
     self.assertEqual(str(cuts_datacards['VV']), str(cuts_datacards_VV))
 def test_any(self):
     cuts_triggers = Cuts(
         doubletau_lowpt='trg_doubletau_lowpt',
         doubletau_mediso='trg_doubletau_mediso',
         doubletau='trg_doubletau',
     )
     any_triggers_test = Cut(
         '((trg_doubletau_lowpt) || (trg_doubletau) || (trg_doubletau_mediso))'
     )
     self.assertEqual(str(cuts_triggers.any()), str(any_triggers_test))
 def test_all(self):
     cuts_triggers = Cuts(
         doubletau_lowpt='trg_doubletau_lowpt',
         doubletau_mediso='trg_doubletau_mediso',
         doubletau='trg_doubletau',
     )
     all_triggers_test = Cut(
         '((trg_doubletau) && (trg_doubletau_mediso) && (trg_doubletau_lowpt))'
     )
     self.assertEqual(str(cuts_triggers.all()), str(all_triggers_test))
Exemple #4
0
 def fill_cut_flow(self, cutflowname='Cuts', nevts=sys.maxint):
     self.cut_flow = Counter(cutflowname)
     ntot = min(self.tree.GetEntries(), nevts)
     nlast = ntot
     cut = Cut('start', '1')
     self.cut_flow.register('Preselection')
     self.cut_flow.inc('Preselection', ntot)
     for cutname, newcut in self.cuts.iteritems():
         cut = cut & newcut
         self.tree.Draw('1', str(cut), 'goff', nevts)
         nsel = self.tree.GetSelectedRows()
         self.cut_flow.register(cutname)
         self.cut_flow.inc(cutname, nsel)
         nlast = nsel
Exemple #5
0
    def test_cfg(self):
        import os 
        basepath = os.path.expandvars(
            '/data2/gtouquet/MSSM_Samples_310119/{}/tree_fakes.root')
        treename = 'events'
        variable = 'mt_tot'
        bins = (100, 0., 3000.)
        cut = ''
        
        n_ev_dy_incl = 48675378. + 49125561.
        DYJetsToLL_M50 = Dataset(
            'DYJetsToLL_M50',
            basepath.format('DYJetsToLL_M50'),
            n_ev_dy_incl, 5765.4,
            treename = treename
        )
        
        cfg1_cut = Cut('l1_pt > 30 || l2_pt > 30')
        cfg1 = Component_cfg(
            name = '_'.join([DYJetsToLL_M50.name, '1']),
            variable = variable,
            dataset = DYJetsToLL_M50,
            cut = cfg1_cut)

        cfg2 = Component_cfg(
            name = '_'.join([DYJetsToLL_M50.name, '2']),
            variable = variable,
            dataset = DYJetsToLL_M50)

        self.assertEqual(
            str(cfg1['cut']),
            str(cfg1_cut))

        self.assertEqual(
            cfg2['cut'],
            Component_cfg.defaults['cut'])

        return cfg1, cfg2
Exemple #6
0
]

cuts_flags = CutFlow([(flag, flag) for flag in flags])

print '\ncut_flow: flags: '
print cuts_flags

cuts_vetoes = CutFlow([
    ('dileptonveto', '!veto_dilepton'),
    ('thirdleptonveto', '!veto_thirdlepton'),
    ('otherleptonveto', '!veto_otherlepton'),
])

print '\ncut_flow: vetoes:'
print cuts_vetoes

cuts_generic = cuts_flags + cuts_vetoes

print '\ncut_flow: generic'

print cuts_generic

cut_os = Cut('opposite_sign', 'l1_charge != l2_charge')
cut_ss = Cut('same_sign', 'l1_charge == l2_charge')

cut_dy_ztt = Cut('dy_ztt', 'l2_gen_match == 5')
cut_dy_zl = Cut('dy_zl', 'l2_gen_match < 5')
cut_dy_zj = Cut('dy_zj', 'l2_gen_match == 6')

pprint.pprint(Cut.available_cuts())
Exemple #7
0
    # SuperTightHalo = 'Flag_globalSuperTightHalo2016Filter',
    Noise='Flag_HBHENoiseFilter',
    NoiseIso='Flag_HBHENoiseIsoFilter',
    EcalDeadCell='Flag_EcalDeadCellTriggerPrimitiveFilter',
    BadPFMuon='Flag_BadPFMuonFilter',
    BadChargedCandidate='Flag_BadChargedCandidateFilter',
    # eeBadSc = 'Flag_eeBadScFilter',
    ecalBadCalib='Flag_ecalBadCalibFilter')

cuts_vetoes = Cuts(
    dileptonveto='!veto_dilepton',
    thirdleptonveto='!veto_extra_elec',
    otherleptonveto='!veto_extra_muon',
)

cut_l1_fakejet = Cut('l1_gen_match==6')
cut_l2_fakejet = Cut('l2_gen_match==6')

cut_os = Cut('l1_q != l2_q')
cut_ss = ~cut_os

cut_nobtag = Cut('b1_pt == -99')
cut_btag = ~cut_nobtag

cut_dy_promptfakeleptons = Cut(
    'l1_gen_match==1 || l1_gen_match==2 || l2_gen_match==1 || l2_gen_match==2')

cut_mt_tot = Cut('mt_tot < 40')

cut_btag_1 = Cut('bjet1_csv > 0')
 def test_and_not(self):
     self.assertEqual(str(Cut('l1_q != l2_q') & ~Cut('l1_q != l2_q')),
                      str(Cut('(l1_q != l2_q) && (!(l1_q != l2_q))')))
Exemple #9
0
muon-tau channel
'''
from htt_plot.tools.cut import Cut, Cuts

channel = 'mt'

# binning
from htt_plot.channels_configs.htt_common import bins

# variables
from htt_plot.channels_configs.htt_common import variables, datacards_variables, var_name_dict

# cuts
from htt_plot.channels_configs.htt_common import cut_mt_lepton, cut_mt_lepton_loose, cut_mt_lepton_tight, cuts_flags, cuts_vetoes, cut_l1_fakejet, cut_l2_fakejet, cut_os, cut_ss, cut_btag_1, cut_btag_2, cut_btag, cut_nobtag

cut_dy_promptfakeleptons = Cut(
    'l1_gen_match==1 || l1_gen_match==2 || l2_gen_match==1 || l2_gen_match==2')

cuts_l1 = Cuts(
    l1_pt='l1_pt >= 21',
    l1_eta='abs(l1_eta) <= 2.1',
    l1_iso='l1_iso < 0.15',
    l1_vertex='abs(l1_d0) < 0.045 && abs(l1_dz) < 0.2',
)

cuts_l2 = Cuts(
    l2_pt='l2_pt >= 23',
    l2_eta='abs(l2_eta) <= 2.3',
    l2_iso='l2_byVVLooseIsolationMVArun2017v2DBoldDMwLT2017 > 0.5',
    l2_charge='abs(l2_q) == 1.',
    l2_vertex='abs(l2_dz) < 0.2',
    l2_decaymode='l2_decayModeFinding > 0.5',
Exemple #10
0
tau-tau channel
'''
from htt_plot.tools.cut import Cut, Cuts

channel = 'tt'

# binning
from htt_plot.channels_configs.htt_common import bins

# variables
from htt_plot.channels_configs.htt_common import variables, datacards_variables, var_name_dict

# cuts
from htt_plot.channels_configs.htt_common import cuts_flags, cuts_vetoes, cut_l1_fakejet, cut_l2_fakejet, cut_os, cut_ss, cut_btag_1, cut_btag_2, cut_btag, cut_nobtag

cut_dy_promptfakeleptons = Cut(
    'l1_gen_match==1 || l1_gen_match==2 || l2_gen_match==1 || l2_gen_match==2')

cuts_l1 = Cuts(
    l1_pt='l1_pt > 40',
    l1_eta='abs(l1_eta) < 2.1',
    l1_iso='l1_byVVLooseIsolationMVArun2017v2DBoldDMwLT2017 > 0.5',
    l1_charge='abs(l1_q) == 1.',
    l1_vertex='abs(l1_dz) < 0.2',
    l1_decaymode='l1_decayModeFinding > 0.5',
)

cuts_l2 = Cuts(
    l2_pt='l2_pt > 40',
    l2_eta='abs(l2_eta) < 2.1',
    l2_iso='l2_byVVLooseIsolationMVArun2017v2DBoldDMwLT2017 > 0.5',
    l2_charge='abs(l2_q) == 1.',
Exemple #11
0
 def test_str(self):
     self.assertEqual(str(Cut('weight')), 'weight')
Exemple #12
0
ele-tau channel
'''
from htt_plot.tools.cut import Cut, Cuts

channel = 'et'

# binning
from htt_plot.channels_configs.htt_common import bins

# variables
from htt_plot.channels_configs.htt_common import variables, datacards_variables, var_name_dict

# cuts
from htt_plot.channels_configs.htt_common import cut_mt_lepton, cut_mt_lepton_loose, cut_mt_lepton_tight, cuts_flags, cuts_vetoes, cut_l1_fakejet, cut_l2_fakejet, cut_os, cut_ss, cut_btag_1, cut_btag_2, cut_btag, cut_nobtag

cut_dy_promptfakeleptons = Cut(
    'l1_gen_match==1 || l1_gen_match==2 || l2_gen_match==1 || l2_gen_match==2')

cuts_l1 = Cuts(
    l1_pt='l1_pt >= 25',
    l1_eta='abs(l1_eta) <= 2.1',
    l1_iso='l1_iso < 0.15',
    l1_vertex='abs(l1_d0) < 0.045 && abs(l1_dz) < 0.2',
)

cuts_l2 = Cuts(
    l2_pt='l2_pt >= 23',
    l2_eta='abs(l2_eta) <= 2.3',
    l2_iso='l2_byVVLooseIsolationMVArun2017v2DBoldDMwLT2017 > 0.5',
    l2_charge='abs(l2_q) == 1.',
    l2_vertex='abs(l2_dz) < 0.2',
    l2_decaymode='l2_decayModeFinding > 0.5',
Exemple #13
0
 def test_or(self):
     self.assertEqual(str(Cut('l1_q != l2_q') | Cut('!(l1_q != l2_q)')),
                      str(Cut('(l1_q != l2_q) || (!(l1_q != l2_q))')))
    # SuperTightHalo = 'Flag_globalSuperTightHalo2016Filter',
    Noise='Flag_HBHENoiseFilter',
    NoiseIso='Flag_HBHENoiseIsoFilter',
    EcalDeadCell='Flag_EcalDeadCellTriggerPrimitiveFilter',
    BadPFMuon='Flag_BadPFMuonFilter',
    BadChargedCandidate='Flag_BadChargedCandidateFilter',
    # eeBadSc = 'Flag_eeBadScFilter',
    ecalBadCalib='Flag_ecalBadCalibFilter')

cuts_vetoes = Cuts(
    dileptonveto='!veto_dilepton',
    thirdleptonveto='!veto_extra_elec',
    otherleptonveto='!veto_extra_muon',
)

cut_l1_fakejet = Cut('l1_gen_match==6')
cut_l2_fakejet = Cut('l2_gen_match==6')

cut_os = Cut('l1_q != l2_q')
cut_ss = ~cut_os

cut_nobtag = Cut('b1_pt == -99')
cut_btag = ~cut_nobtag

cut_mt_lepton_loose = Cut('l1_mt < 70 && l1_mt > 40')
cut_mt_lepton_tight = Cut('l1_mt < 40')
cut_mt_lepton = Cut('l1_mt < 70')

cut_btag_1 = Cut('bjet1_csv > 0')

cut_btag_2 = Cut('bjet2_csv > 0')
Exemple #15
0
 def test_not(self):
     self.assertEqual(str(~Cut('l1_q != l2_q')),
                      str(Cut('!(l1_q != l2_q)')))
Exemple #16
0
 def test_imul(self):
     cut_os_itimes_weight = Cut('l1_q != l2_q')
     cut_os_itimes_weight *= Cut('weight')
     self.assertEqual(str(cut_os_itimes_weight),
                      str(Cut('(l1_q != l2_q) * (weight)')))
Exemple #17
0
 def test_mul(self):
     self.assertEqual(str(Cut('l1_q != l2_q') * Cut('weight')),
                      str(Cut('(l1_q != l2_q) * (weight)')))