def __init__(self, name, dataType, **kwargs): year = kwargs.get('year', 2017) tes = kwargs.get('tes', 1.0) channel = 'eletau' self.name = name self.year = year self.tes = tes self.out = TreeProducerEleTau(name) self.isData = dataType == 'data' self.doZpt = 'DY' in self.name setYear(year) self.vlooseIso = getVLooseTauIso(year) if year == 2016: self.trigger = lambda e: e.HLT_Ele25_eta2p1_WPTight_Gsf or e.HLT_Ele45_WPLoose_Gsf_L1JetTauSeeded #or e.HLT_Ele24_eta2p1_WPLoose_Gsf_LooseIsoPFTau20_SingleL1 or e.HLT_Ele24_eta2p1_WPLoose_Gsf_LooseIsoPFTau20 or e.HLT_Ele24_eta2p1_WPLoose_Gsf_LooseIsoPFTau30 self.electronCutPt = 26 else: # HLT_Ele32_WPTight_Gsf_L1DoubleEG # HLT_Ele32_WPTight_Gsf self.trigger = lambda e: e.HLT_Ele35_WPTight_Gsf or e.HLT_Ele32_WPTight_Gsf self.electronCutPt = 36 self.tauCutPt = 20 if not self.isData: self.eleSFs = ElectronSFs(year=year) self.puTool = PileupWeightTool(year=year) self.ltfSFs = LeptonTauFakeSFs('loose', 'tight', year=year) self.btagTool = BTagWeightTool('CSVv2', 'medium', channel=channel, year=year) self.btagTool_deep = BTagWeightTool('DeepCSV', 'medium', channel=channel, year=year) if self.doZpt: self.recoilTool = RecoilCorrectionTool(year=year) self.csvv2_wp = BTagWPs('CSVv2', year=year) self.deepcsv_wp = BTagWPs('DeepCSV', year=year) self.Nocut = 0 self.Trigger = 1 self.GoodElectrons = 2 self.GoodTaus = 3 self.GoodDiLepton = 4 self.TotalWeighted = 15 self.TotalWeighted_no0PU = 16 self.out.cutflow.GetXaxis().SetBinLabel(1 + self.Nocut, "no cut") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.Trigger, "trigger") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.GoodElectrons, "electron object") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.GoodTaus, "tau object") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.GoodDiLepton, "eletau pair") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.TotalWeighted, "no cut, weighted") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.TotalWeighted_no0PU, "no cut, weighted, PU>0") self.out.cutflow.GetXaxis().SetLabelSize(0.041)
def __init__(self, name, dataType, **kwargs): self.name = name self.out = TreeProducerEleTau(name) self.isData = dataType == 'data' self.year = kwargs.get('year', 2017) self.tes = kwargs.get('tes', 1.0) self.ltf = kwargs.get('ltf', 1.0) self.jtf = kwargs.get('jtf', 1.0) self.doZpt = kwargs.get('doZpt', 'DY' in name) self.doRecoil = kwargs.get( 'doRecoil', ('DY' in name or re.search(r"W\d?Jets", name)) and self.year > 2016) self.doTTpt = kwargs.get('doTTpt', 'TT' in name) self.doTight = kwargs.get('doTight', self.tes != 1 or self.ltf != 1) self.channel = 'eletau' year, channel = self.year, self.channel self.vlooseIso = getVLooseTauIso(year) if year == 2016: self.trigger = lambda e: e.HLT_Ele25_eta2p1_WPTight_Gsf or e.HLT_Ele27_WPTight_Gsf #or e.HLT_Ele45_WPLoose_Gsf_L1JetTauSeeded #or e.HLT_Ele24_eta2p1_WPLoose_Gsf_LooseIsoPFTau20_SingleL1 or e.HLT_Ele24_eta2p1_WPLoose_Gsf_LooseIsoPFTau20 or e.HLT_Ele24_eta2p1_WPLoose_Gsf_LooseIsoPFTau30 self.eleCutPt = 26 elif year == 2017: self.trigger = lambda e: e.HLT_Ele35_WPTight_Gsf or e.HLT_Ele32_WPTight_Gsf_L1DoubleEG or e.HLT_Ele32_WPTight_Gsf self.eleCutPt = 36 else: self.trigger = lambda e: e.HLT_Ele32_WPTight_Gsf or e.HLT_Ele35_WPTight_Gsf self.eleCutPt = 33 self.tauCutPt = 20 if not self.isData: self.eleSFs = ElectronSFs(year=year) self.puTool = PileupWeightTool(year=year) self.ltfSFs = LeptonTauFakeSFs('loose', 'tight', year=year) self.btagTool = BTagWeightTool('DeepCSV', 'medium', channel='mutau', year=year) if self.doZpt: self.zptTool = ZptCorrectionTool(year=year) if self.doRecoil: self.recoilTool = RecoilCorrectionTool(year=year) self.deepcsv_wp = BTagWPs('DeepCSV', year=year) self.Nocut = 0 self.Trigger = 1 self.GoodElectrons = 2 self.GoodTaus = 3 self.GoodDiLepton = 4 self.TotalWeighted = 15 self.TotalWeighted_no0PU = 16 self.out.cutflow.GetXaxis().SetBinLabel(1 + self.Nocut, "no cut") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.Trigger, "trigger") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.GoodElectrons, "electron object") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.GoodTaus, "tau object") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.GoodDiLepton, "eletau pair") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.TotalWeighted, "no cut, weighted") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.TotalWeighted_no0PU, "no cut, weighted, PU>0") self.out.cutflow.GetXaxis().SetLabelSize(0.041)
def __init__(self, name, dataType, **kwargs): year = kwargs.get('year', 2017) tes = kwargs.get('tes', 1.0) channel = 'mutau' self.name = name self.year = year self.tes = tes self.out = TreeProducerMuTau(name) self.isData = dataType == 'data' self.doZpt = 'DY' in self.name setYear(year) self.vlooseIso = getVLooseTauIso(year) if year == 2016: self.trigger = lambda e: e.HLT_IsoMu22 or e.HLT_IsoMu22_eta2p1 or e.HLT_IsoTkMu22 or e.HLT_IsoTkMu22_eta2p1 #or e.HLT_IsoMu19_eta2p1_LooseIsoPFTau20_SingleL1 self.muonCutPt = 23 else: self.trigger = lambda e: e.HLT_IsoMu24 or e.HLT_IsoMu27 self.muonCutPt = 25 self.tauCutPt = 20 if not self.isData: self.muSFs = MuonSFs(year=year) self.puTool = PileupWeightTool(year=year) self.ltfSFs = LeptonTauFakeSFs('tight', 'vloose', year=year) self.btagTool = BTagWeightTool('CSVv2', 'medium', channel=channel, year=year) self.btagTool_deep = BTagWeightTool('DeepCSV', 'medium', channel=channel, year=year) if self.doZpt: self.recoilTool = RecoilCorrectionTool(year=year) self.csvv2_wp = BTagWPs('CSVv2', year=year) self.deepcsv_wp = BTagWPs('DeepCSV', year=year) self.Nocut = 0 self.Trigger = 1 self.GoodMuons = 2 self.GoodTaus = 3 self.GoodDiLepton = 4 self.TotalWeighted = 15 self.TotalWeighted_no0PU = 16 self.out.cutflow.GetXaxis().SetBinLabel(1 + self.Nocut, "no cut") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.Trigger, "trigger") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.GoodMuons, "muon object") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.GoodTaus, "tau object") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.GoodDiLepton, "mutau pair") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.TotalWeighted, "no cut, weighted") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.TotalWeighted_no0PU, "no cut, weighted, PU>0") self.out.cutflow.GetXaxis().SetLabelSize(0.041)
def __init__(self, name, dataType, **kwargs): self.name = name self.out = TreeProducerTauTau(name) self.isData = dataType == 'data' self.year = kwargs.get('year', 2017) self.tes = kwargs.get('tes', 1.0) self.ltf = kwargs.get('ltf', 1.0) self.jtf = kwargs.get('jtf', 1.0) self.doZpt = kwargs.get('doZpt', 'DY' in name) self.doRecoil = kwargs.get( 'doRecoil', ('DY' in name or re.search(r"W\d?Jets", name)) and self.year > 2016) self.doTTpt = kwargs.get('doTTpt', 'TT' in name) self.doTight = kwargs.get('doTight', self.tes != 1 or self.ltf != 1) self.channel = 'tautau' year, channel = self.year, self.channel self.vlooseIso = getVLooseTauIso(year) if year == 2016: if self.isData: self.trigger = lambda e: e.HLT_DoubleMediumIsoPFTau35_Trk1_eta2p1_Reg \ if e.run<280919 else e.HLT_DoubleMediumCombinedIsoPFTau35_Trk1_eta2p1_Reg else: self.trigger = lambda e: e.HLT_DoubleMediumIsoPFTau35_Trk1_eta2p1_Reg or e.HLT_DoubleMediumCombinedIsoPFTau35_Trk1_eta2p1_Reg elif year == 2017: self.trigger = lambda e: e.HLT_DoubleTightChargedIsoPFTau35_Trk1_TightID_eta2p1_Reg or e.HLT_DoubleTightChargedIsoPFTau40_Trk1_eta2p1_Reg or e.HLT_DoubleMediumChargedIsoPFTau40_Trk1_TightID_eta2p1_Reg else: if self.isData: self.trigger = lambda e: e.HLT_DoubleTightChargedIsoPFTau35_Trk1_TightID_eta2p1_Reg or e.HLT_DoubleTightChargedIsoPFTau40_Trk1_eta2p1_Reg or e.HLT_DoubleMediumChargedIsoPFTau40_Trk1_TightID_eta2p1_Reg \ if e.run<317509 else e.HLT_DoubleMediumChargedIsoPFTauHPS35_Trk1_eta2p1_Reg else: self.trigger = lambda e: e.HLT_DoubleMediumChargedIsoPFTauHPS35_Trk1_eta2p1_Reg self.tauCutPt = 40 if not self.isData: self.tauSFs = TauTriggerSFs('tautau', 'tight', year=year) self.tauSFsVT = TauTriggerSFs('tautau', 'vtight', year=year) self.ltfSFs = LeptonTauFakeSFs('loose', 'vloose', year=year) self.puTool = PileupWeightTool(year=year) self.btagTool = BTagWeightTool('DeepCSV', 'medium', channel='mutau', year=year) if self.doZpt: self.zptTool = ZptCorrectionTool(year=year) if self.doRecoil: self.recoilTool = RecoilCorrectionTool(year=year) self.deepcsv_wp = BTagWPs('DeepCSV', year=year) self.Nocut = 0 self.Trigger = 1 self.GoodTaus = 2 self.GoodDiTau = 3 self.Nocut_GT = 20 self.Trigger_GT = 21 self.GoodTaus_GT = 22 self.GoodDiTau_GT = 23 self.TotalWeighted = 15 self.TotalWeighted_no0PU = 16 self.out.cutflow.GetXaxis().SetBinLabel(1 + self.Nocut, "no cut") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.Trigger, "trigger") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.GoodTaus, "tau objects") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.GoodDiTau, "ditau pair") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.Nocut_GT, "no cut, GM") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.Trigger_GT, "trigger, GM") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.GoodTaus_GT, "tau objects, GM") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.GoodDiTau_GT, "ditau pair, GM") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.TotalWeighted, "no cut, weighted") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.TotalWeighted_no0PU, "no cut, weighted, PU>0") self.out.cutflow.GetXaxis().SetLabelSize(0.041)
def __init__(self, name, dataType, **kwargs): self.name = name self.out = TreeProducerMuTau(name) self.isData = dataType == 'data' self.year = kwargs.get('year', 2017) self.tes = kwargs.get('tes', 1.0) self.ltf = kwargs.get('ltf', 1.0) self.jtf = kwargs.get('jtf', 1.0) self.doZpt = kwargs.get('doZpt', 'DY' in name) self.doRecoil = kwargs.get( 'doRecoil', ('DY' in name or re.search(r"W\d?Jets", name)) and self.year > 2016) self.doTTpt = kwargs.get('doTTpt', 'TT' in name) self.doTight = kwargs.get( 'doTight', self.tes != 1 or self.ltf != 1 or self.jtf != 1) self.channel = 'mutau' year, channel = self.year, self.channel self.vlooseIso = getVLooseTauIso(year) self.filter = getMETFilters(year, self.isData) if year == 2016: self.trigger = lambda e: e.HLT_IsoMu22 or e.HLT_IsoMu22_eta2p1 or e.HLT_IsoTkMu22 or e.HLT_IsoTkMu22_eta2p1 #or e.HLT_IsoMu19_eta2p1_LooseIsoPFTau20_SingleL1 self.muonCutPt = lambda e: 23 elif year == 2017: self.trigger = lambda e: e.HLT_IsoMu24 or e.HLT_IsoMu27 #or e.HLT_IsoMu20_eta2p1_LooseChargedIsoPFTau27_eta2p1_CrossL1 self.muonCutPt = lambda e: 25 if e.HLT_IsoMu24 else 28 else: self.trigger = lambda e: e.HLT_IsoMu24 or e.HLT_IsoMu27 #or e.HLT_IsoMu20_eta2p1_LooseChargedIsoPFTau27_eta2p1_CrossL1 self.muonCutPt = lambda e: 25 self.tauCutPt = 20 if not self.isData: self.muSFs = MuonSFs(year=year) self.puTool = PileupWeightTool(year=year) self.ltfSFs = LeptonTauFakeSFs('tight', 'vloose', year=year) self.btagTool = BTagWeightTool('DeepCSV', 'medium', channel=channel, year=year) if self.doZpt: self.zptTool = ZptCorrectionTool(year=year) if self.doRecoil: self.recoilTool = RecoilCorrectionTool(year=year) self.deepcsv_wp = BTagWPs('DeepCSV', year=year) self.Nocut = 0 self.Trigger = 1 self.GoodMuons = 2 self.GoodTaus = 3 self.GoodDiLepton = 4 self.TotalWeighted = 15 self.TotalWeighted_no0PU = 16 self.out.cutflow.GetXaxis().SetBinLabel(1 + self.Nocut, "no cut") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.Trigger, "trigger") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.GoodMuons, "muon object") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.GoodTaus, "tau object") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.GoodDiLepton, "mutau pair") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.TotalWeighted, "no cut, weighted") self.out.cutflow.GetXaxis().SetBinLabel(1 + self.TotalWeighted_no0PU, "no cut, weighted, PU>0") self.out.cutflow.GetXaxis().SetLabelSize(0.041)