class LeptonTreeProducer(Analyzer): def beginLoop(self, setup): super(LeptonTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree( self.cfg_ana.tree_name, self.cfg_ana.tree_title ) bookLepton(self.tree, 'lep1') bookLepton(self.tree, 'lep2') def process(self, event): self.tree.reset() leptons = getattr(event, self.cfg_ana.leptons) if len(leptons) > 0: fillLepton(self.tree, 'lep1', leptons[0]) if len(leptons) > 1: fillLepton(self.tree, 'lep2', leptons[1]) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class Higgs350TreeProducer(Analyzer): def beginLoop(self, setup): super(Higgs350TreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree('events', '') bookParticle(self.tree, 'recoil_gen') bookParticle(self.tree, 'recoil_visible_gen') bookParticle(self.tree, 'recoil_papas') bookParticle(self.tree, 'recoil_visible_papas') bookParticle(self.tree, 'recoil_cms') bookParticle(self.tree, 'recoil_visible_cms') def process(self, event): self.tree.reset() fillParticle(self.tree, 'recoil_gen', event.recoil_gen) fillParticle(self.tree, 'recoil_visible_gen', event.recoil_visible_gen) if hasattr(event, 'recoil_papas'): fillParticle(self.tree, 'recoil_papas', event.recoil_papas) fillParticle(self.tree, 'recoil_visible_papas', event.recoil_visible_papas) if hasattr(event, 'recoil_cms'): fillParticle(self.tree, 'recoil_cms', event.recoil_cms) fillParticle(self.tree, 'recoil_visible_cms', event.recoil_visible_cms) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class SimpleTreeProducer(Analyzer): def beginLoop(self, setup): super(SimpleTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree( 'events', '') bookParticle(self.tree, 'recoil_gen') bookParticle(self.tree, 'recoil_visible_gen') bookParticle(self.tree, 'recoil_papas') bookParticle(self.tree, 'recoil_visible_papas') def process(self, event): self.tree.reset() fillParticle(self.tree, 'recoil_gen', event.recoil_gen) fillParticle(self.tree, 'recoil_visible_gen', event.recoil_visible_gen) if hasattr(event, 'recoil_papas'): fillParticle(self.tree, 'recoil_papas', event.recoil_papas) fillParticle(self.tree, 'recoil_visible_papas', event.recoil_visible_papas) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class IsoParticleTreeProducer(Analyzer): def beginLoop(self, setup): super(IsoParticleTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree( self.cfg_ana.tree_name, self.cfg_ana.tree_title ) bookIsoParticle(self.tree, 'ptc') def process(self, event): self.tree.reset() leptons = getattr(event, self.cfg_ana.leptons) pdgids = [211, 22, 130] for lepton in leptons: for pdgid in pdgids: iso = getattr(lepton, 'iso_{pdgid:d}'.format(pdgid=pdgid)) for ptc in iso.on_ptcs: self.tree.reset() fillIsoParticle(self.tree, 'ptc', ptc, lepton) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class ConeTreeProducer(Analyzer): def beginLoop(self, setup): super(ConeTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'jet_tree.root']), 'recreate') self.tree = Tree(self.cfg_ana.tree_name, self.cfg_ana.tree_title) bookParticle(self.tree, 'particle') var(self.tree, 'dR') var(self.tree, 'is_gen_matched') var(self.tree, 'iEv') def process(self, event): ptcs = getattr(event, self.cfg_ana.particles, []) fill(self.tree, 'iEv', getattr(event, 'iEv')) for ptc in ptcs: self.tree.reset() fillParticle(self.tree, 'particle', ptc) if ptc.gen_matched: fill(self.tree, 'is_gen_matched', 1) else: fill(self.tree, 'is_gen_matched', 0) fill(self.tree, 'dR', ptc.dR) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class JetTreeProducer(Analyzer): def beginLoop(self, setup): super(JetTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'jet_tree.root']), 'recreate') self.tree = Tree( self.cfg_ana.tree_name, self.cfg_ana.tree_title ) bookJet(self.tree, 'jet1') bookJet(self.tree, 'jet1_gen') bookJet(self.tree, 'jet2') bookJet(self.tree, 'jet2_gen') def process(self, event): self.tree.reset() if( len(event.rec_jets)>0 ): jet = event.rec_jets[0] fillJet(self.tree, 'jet1', jet) if jet.gen: fillJet(self.tree, 'jet1_gen', jet.gen) if( len(event.rec_jets)>1 ): jet = event.rec_jets[1] fillJet(self.tree, 'jet2', jet) if jet.gen: fillJet(self.tree, 'jet2_gen', jet.gen) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class TreeProducer(Analyzer): def beginLoop(self, setup): super(TreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree('events', '') self.taggers = 'mu' bookParticle(self.tree, 'higgs') bookParticle(self.tree, 'muon1') bookParticle(self.tree, 'muon2') var(self.tree, 'lenmu') def process(self, event): self.tree.reset() lenmu = getattr(event, self.cfg_ana.lenmu) fill(self.tree, 'lenmu', lenmu) higgs = getattr(event, self.cfg_ana.higgs) if higgs: fillParticle(self.tree, 'higgs', higgs) muons = getattr(event, self.cfg_ana.muons) for i, muon in enumerate(reversed(muons)): if i == 2: break fillParticle(self.tree, 'muon{i}'.format(i=i + 1), muon) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class TreeProducer(Analyzer): def beginLoop(self, setup): super(TreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree('events', '') self.tree.var('weight', float) self.tree.var('nljets', float) self.tree.var('nbjets', float) self.tree.var('ncjets', float) self.tree.var('ntaujets', float) self.tree.var('njets', float) self.tree.var('nmu_recoil', float) self.tree.var('nele', float) self.tree.var('nph', float) bookParticle(self.tree, 'recoil') bookParticle(self.tree, 'zed') bookParticle(self.tree, 'mu1') bookParticle(self.tree, 'mu2') bookMet(self.tree, 'met') def process(self, event): self.tree.reset() zeds = getattr(event, self.cfg_ana.zeds) if len(zeds) == 1: self.tree.fill('weight', event.weight) # Reco Higgs zed = zeds[0] fillParticle(self.tree, 'zed', zed) fillMet(self.tree, 'met', event.met) fillLepton(self.tree, 'mu1', zeds[0].legs[0]) fillLepton(self.tree, 'mu2', zeds[0].legs[1]) self.tree.fill('nbjets', len(event.selected_bs)) self.tree.fill('ncjets', len(event.selected_cs)) self.tree.fill('ntaujets', len(event.selected_taus)) self.tree.fill('nljets', len(event.selected_lights)) self.tree.fill( 'njets', len(event.selected_lights) + len(event.selected_bs) + len(event.selected_cs)) self.tree.fill('nmu_recoil', len(event.dressed_muons) - 2) self.tree.fill('nele', len(event.dressed_electrons)) self.tree.fill('nph', len(event.dressed_photons)) recoil = getattr(event, self.cfg_ana.recoil) fillParticle(self.tree, 'recoil', recoil) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class TTbarTreeProducer(Analyzer): def beginLoop(self, setup): super(TTbarTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree('events', '') bookParticle(self.tree, 'jet1') bookParticle(self.tree, 'jet2') bookParticle(self.tree, 'jet3') bookParticle(self.tree, 'jet4') bookParticle(self.tree, 'm3') var(self.tree, 'mtw') bookMet(self.tree, 'met') bookLepton(self.tree, 'muon', pflow=False) bookLepton(self.tree, 'electron', pflow=False) def process(self, event): self.tree.reset() muons = getattr(event, self.cfg_ana.muons) electrons = getattr(event, self.cfg_ana.electrons) if len(muons) == 0 and len(electrons) == 0: return # NOT FILLING THE TREE IF NO if len(muons) == 1 and len(electrons) == 0: fillLepton(self.tree, 'muon', muons[0]) fillIso(self.tree, 'muon_iso', muons[0].iso) elif len(electrons) == 1 and len(muons) == 0: fillLepton(self.tree, 'electron', electrons[0]) fillIso(self.tree, 'electron_iso', electrons[0].iso) else: return # NOT FILLING THE TREE IF MORE THAN 1 LEPTON jets = getattr(event, self.cfg_ana.jets_30) if len(jets) < 3: return # NOT FILLING THE TREE IF LESS THAN 4 JETS for ijet, jet in enumerate(jets): if ijet == 4: break fillParticle(self.tree, 'jet{ijet}'.format(ijet=ijet + 1), jet) m3 = getattr(event, self.cfg_ana.m3) if m3: fillParticle(self.tree, 'm3', m3) mtw = getattr(event, self.cfg_ana.mtw) if mtw: fill(self.tree, 'mtw', mtw) #fillParticle(self.tree, 'mtw', mtw) met = getattr(event, self.cfg_ana.met) fillMet(self.tree, 'met', met) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class JetPtcTreeProducer(Analyzer): '''Some class doc''' def beginLoop(self, setup): super(JetPtcTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'jet_tree.root']), 'recreate') self.tree = Tree( self.cfg_ana.tree_name, self.cfg_ana.tree_title ) bookJet(self.tree, 'jet1') bookJet(self.tree, 'jet1_rec') bookJet(self.tree, 'jet2') bookJet(self.tree, 'jet2_rec') var(self.tree, 'event') var(self.tree, 'lumi') var(self.tree, 'run') bookParticle(self.tree, 'ptc_gen') bookParticle(self.tree, 'ptc_rec') def process(self, event): self.tree.reset() if hasattr(event, 'eventId'): fill(self.tree, 'event', event.eventId) fill(self.tree, 'lumi', event.lumi) fill(self.tree, 'run', event.run) elif hasattr(event, 'iEv'): fill(self.tree, 'event', event.iEv) jets = getattr(event, self.cfg_ana.jets) if( len(jets)>0 ): jet = jets[0] comp211 = jet.constituents.get(211, None) if comp211: if comp211.num==2: import pdb; pdb.set_trace() fillJet(self.tree, 'jet1', jet) if jet.match: fillJet(self.tree, 'jet1_rec', jet.match) # if jet.e()/jet.match.e() > 2.: # import pdb; pdb.set_trace() if( len(jets)>1 ): jet = jets[1] fillJet(self.tree, 'jet2', jet) if jet.match: fillJet(self.tree, 'jet2_rec', jet.match) ptc = getattr(event, self.cfg_ana.particle) fillParticle(self.tree, 'ptc_gen', ptc[0]) if ptc[0].match: fillParticle(self.tree, 'ptc_rec', ptc[0].match) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class ParticleTreeProducer(Analyzer): '''Fills a TTree for particle-flow studies (experts only)''' def beginLoop(self, setup): super(ParticleTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree('particles', '') bookParticle(self.tree, 'ptc') bookCluster(self.tree, 'ptc_ecal') bookParticle(self.tree, 'ptc_match') var(self.tree, 'dr') bookParticle(self.tree, 'ptc_match_211') var(self.tree, 'dr_211') bookParticle(self.tree, 'ptc_match_130') var(self.tree, 'dr_130') bookParticle(self.tree, 'ptc_match_22') var(self.tree, 'dr_22') def process(self, event): particles = getattr(event, self.cfg_ana.particles) for ptc in particles: self.tree.reset() fillParticle(self.tree, 'ptc', ptc) m211 = m22 = False # if hasattr(ptc, 'clusters'): # # sim particle # ecal = ptc.clusters.get('ecal_in', None) # if ecal: # fillCluster(self.tree, 'ptc_ecal', ecal) if hasattr(ptc, 'match') and ptc.match: fillParticle(self.tree, 'ptc_match', ptc.match) fill(self.tree, 'dr', ptc.dr) if hasattr(ptc, 'match_211') and ptc.match_211: m211 = True fillParticle(self.tree, 'ptc_match_211', ptc.match_211) fill(self.tree, 'dr_211', ptc.dr_211) if hasattr(ptc, 'match_130') and ptc.match_130: fillParticle(self.tree, 'ptc_match_130', ptc.match_130) fill(self.tree, 'dr_130', ptc.dr_130) if hasattr(ptc, 'match_22') and ptc.match_22: m22 = True fillParticle(self.tree, 'ptc_match_22', ptc.match_22) fill(self.tree, 'dr_22', ptc.dr_22) # if m22 and not m211: # print event # import pdb; pdb.set_trace() self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class JetConeTreeProducer(Analyzer): def beginLoop(self, setup): super(JetConeTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'jet_tree.root']), 'recreate') self.tree = Tree( self.cfg_ana.tree_name, self.cfg_ana.tree_title ) bookJet(self.tree, 'papasjet') bookJet(self.tree, 'cmsjet') bookJet(self.tree, 'papas_control_jet') bookJet(self.tree, 'cms_control_jet') bookJet(self.tree, 'gen_jet') bookJet(self.tree, 'simtrack') var(self.tree, 'simtrack_len') for i in range(20): bookParticle(self.tree, 'simtrack_ptc'+str(i)) bookParticle(self.tree, 'PFCandidate') def process(self, event): self.tree.reset() papasjet = getattr(event, self.cfg_ana.rec_jet, None) cmsjet = getattr(event, self.cfg_ana.pf_jet, None) papas_control_jet = getattr(event, self.cfg_ana.rec_control_jet, None) cms_control_jet = getattr(event, self.cfg_ana.pf_control_jet, None) gen_jet = getattr(event, self.cfg_ana.gen_jet, None) if papasjet: fillJet(self.tree, 'papasjet', papasjet) if cmsjet: fillJet(self.tree, 'cmsjet', cmsjet) if papas_control_jet: fillJet(self.tree, 'papas_control_jet', papas_control_jet) if cms_control_jet: fillJet(self.tree, 'cms_control_jet', cms_control_jet) if gen_jet: fillJet(self.tree, 'gen_jet', gen_jet) sim_track_jet = getattr(event, self.cfg_ana.sim_track_jet, None) if sim_track_jet: fillJet(self.tree, 'simtrack', sim_track_jet) sim_track_ptcs = getattr(event, self.cfg_ana.sim_track, None) if sim_track_ptcs: for i in range(min(len(sim_track_ptcs), 20)): fillParticle(self.tree, 'simtrack_ptc'+str(i), sim_track_ptcs[i]) fill(self.tree, 'simtrack_len', len(sim_track_ptcs)) pfcandidates = getattr(event, self.cfg_ana.pfcandidates, None) if pfcandidates: fillParticle(self.tree, 'PFCandidate', pfcandidates[0]) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class FakePhotonTreeProducer(Analyzer): def beginLoop(self, setup): super(FakePhotonTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'check_tree.root']), 'recreate') self.tree = Tree('events', '') def process(self, event): self.tree.reset() gen_particles = getattr(event, self.cfg_ana.gen_particles) gen_final_particles = [ genParticle for genParticle in gen_particles if genParticle._status == 1 ] gen_photons = [ genParticle for genParticle in gen_particles if genParticle._pid == 22 and genParticle._status == 23 ] gen_us = [ genParticle for genParticle in gen_particles if abs(genParticle._pid) == 2 and genParticle._status == 23 ] gen_ts = [ genParticle for genParticle in gen_particles if abs(genParticle._pid) == 6 and genParticle._status == 22 ] # fake photons ================ photons = getattr(event, self.cfg_ana.photons) if not len(photons): return photon = photons[0] for part in gen_final_particles: delta_r = photon._tlv.DeltaR(part._tlv) delta_pt = abs(photon._tlv.Pt() - part._tlv.Pt()) if delta_r > 1.0: continue if delta_pt > 500: continue print part._pid, part._tlv.Pt(), part._tlv.Eta(), part._tlv.Phi( ), delta_r, delta_pt for photon in photons: print "reco-photon", photon._tlv.Pt(), photon._tlv.Eta( ), photon._tlv.Phi() self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class TTbarTreeProducer(Analyzer): def beginLoop(self, setup): super(TTbarTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree( 'events', '') bookParticle(self.tree, 'jet1') bookParticle(self.tree, 'jet2') bookParticle(self.tree, 'jet3') bookParticle(self.tree, 'jet4') bookParticle(self.tree, 'm3') bookMet(self.tree, 'met') bookLepton(self.tree, 'muon') bookLepton(self.tree, 'electron') def process(self, event): self.tree.reset() muons = getattr(event, self.cfg_ana.muons) electrons = getattr(event, self.cfg_ana.electrons) if len(muons)==0 and len(electrons)==0: return # NOT FILLING THE TREE IF NO if len(muons)==1 and len(electrons)==0: fillLepton(self.tree, 'muon', muons[0]) elif len(electrons)==1 and len(muons)==0: fillLepton(self.tree, 'electron', electrons[0]) else: return # NOT FILLING THE TREE IF MORE THAN 1 LEPTON jets = getattr(event, self.cfg_ana.jets_30) if len(jets)<3: return # NOT FILLING THE TREE IF LESS THAN 4 JETS for ijet, jet in enumerate(jets): if ijet==4: break fillParticle(self.tree, 'jet{ijet}'.format(ijet=ijet+1), jet) m3 = getattr(event, self.cfg_ana.m3) if m3: fillParticle(self.tree, 'm3', m3) met = getattr(event, self.cfg_ana.met) fillMet(self.tree, 'met', met) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class ZHTreeProducer(Analyzer): def beginLoop(self, setup): super(ZHTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree('events', '') bookParticle(self.tree, 'recoil') self.taggers = ['b', 'bmatch', 'bfrac'] bookJet(self.tree, 'jet1', self.taggers) bookJet(self.tree, 'jet2', self.taggers) bookJet(self.tree, 'jet3', self.taggers) bookJet(self.tree, 'jet4', self.taggers) ## bookParticle(self.tree, 'zed') ## bookLepton(self.tree, 'zed_1') ## bookLepton(self.tree, 'zed_2') bookZed(self.tree, 'zed') bookParticle(self.tree, 'higgs') bookParticle(self.tree, 'higgs_1') bookParticle(self.tree, 'higgs_2') bookParticle(self.tree, 'misenergy') def process(self, event): self.tree.reset() recoil = getattr(event, self.cfg_ana.recoil) fillParticle(self.tree, 'recoil', recoil) misenergy = getattr(event, self.cfg_ana.misenergy) fillParticle(self.tree, 'misenergy', misenergy) zeds = getattr(event, self.cfg_ana.zeds) if len(zeds) > 0: zed = zeds[0] fillZed(self.tree, 'zed', zed) ## fillLepton(self.tree, 'zed_1', zed.legs[0]) ## fillLepton(self.tree, 'zed_2', zed.legs[1]) jets = getattr(event, self.cfg_ana.jets) for ijet, jet in enumerate(jets): if ijet == 4: break fillJet(self.tree, 'jet{ijet}'.format(ijet=ijet + 1), jet, self.taggers) higgses = getattr(event, self.cfg_ana.higgses) if len(higgses) > 0: higgs = higgses[0] # if higgs.m() < 30: # import pdb; pdb.set_trace() fillParticle(self.tree, 'higgs', higgs) fillLepton(self.tree, 'higgs_1', higgs.legs[0]) fillLepton(self.tree, 'higgs_2', higgs.legs[1]) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class JetPtcTreeProducer(Analyzer): '''Some class doc''' def beginLoop(self, setup): super(JetPtcTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'jet_tree.root']), 'recreate') self.tree = Tree(self.cfg_ana.tree_name, self.cfg_ana.tree_title) bookJet(self.tree, 'jet1') bookJet(self.tree, 'jet1_rec') bookJet(self.tree, 'jet2') bookJet(self.tree, 'jet2_rec') var(self.tree, 'event') var(self.tree, 'lumi') var(self.tree, 'run') bookParticle(self.tree, 'ptc_gen') bookParticle(self.tree, 'ptc_rec') def process(self, event): self.tree.reset() if hasattr(event, 'eventId'): fill(self.tree, 'event', event.eventId) fill(self.tree, 'lumi', event.lumi) fill(self.tree, 'run', event.run) elif hasattr(event, 'iEv'): fill(self.tree, 'event', event.iEv) jets = getattr(event, self.cfg_ana.jets) if (len(jets) > 0): jet = jets[0] comp211 = jet.constituents.get(211, None) if comp211: if comp211.num == 2: import pdb pdb.set_trace() fillJet(self.tree, 'jet1', jet) if jet.match: fillJet(self.tree, 'jet1_rec', jet.match) # if jet.e()/jet.match.e() > 2.: # import pdb; pdb.set_trace() if (len(jets) > 1): jet = jets[1] fillJet(self.tree, 'jet2', jet) if jet.match: fillJet(self.tree, 'jet2_rec', jet.match) ptc = getattr(event, self.cfg_ana.particle) fillParticle(self.tree, 'ptc_gen', ptc[0]) if ptc[0].match: fillParticle(self.tree, 'ptc_rec', ptc[0].match) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
def test_cwn(self): fi = TFile('tree2.root','RECREATE') tr = Tree('test_tree', 'A test tree') tr.var('nvals', the_type=int) tr.vector('x', 'nvals', 20) tr.fill('nvals', 10) tr.vfill('x', range(10)) tr.tree.Fill() tr.reset() tr.fill('nvals', 5) tr.vfill('x', range(5)) tr.tree.Fill() fi.Write() fi.Close()
class ZHTreeProducer(Analyzer): def beginLoop(self, setup): super(ZHTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree( 'events', '') if hasattr(self.cfg_ana, 'recoil'): bookParticle(self.tree, 'recoil') if hasattr(self.cfg_ana, 'zeds'): bookZed(self.tree, 'zed') self.taggers = ['b', 'bmatch', 'bfrac'] bookJet(self.tree, 'jet1', self.taggers) bookJet(self.tree, 'jet2', self.taggers) bookHbb(self.tree, 'higgs') bookParticle(self.tree, 'misenergy') var(self.tree, 'n_nu') def process(self, event): self.tree.reset() if hasattr(self.cfg_ana, 'recoil'): recoil = getattr(event, self.cfg_ana.recoil) fillParticle(self.tree, 'recoil', recoil) if hasattr(self.cfg_ana, 'zeds'): zeds = getattr(event, self.cfg_ana.zeds) if len(zeds)>0: zed = zeds[0] fillZed(self.tree, 'zed', zed) misenergy = getattr(event, self.cfg_ana.misenergy) fillParticle(self.tree, 'misenergy', misenergy ) jets = getattr(event, self.cfg_ana.jets) for ijet, jet in enumerate(jets): if ijet == 2: break fillJet(self.tree, 'jet{ijet}'.format(ijet=ijet+1), jet, self.taggers) higgses = getattr(event, self.cfg_ana.higgses) if len(higgses)>0: higgs = higgses[0] # if higgs.m() < 30: # import pdb; pdb.set_trace() fillHbb(self.tree, 'higgs', higgs) neutrinos = getattr(event, 'neutrinos', None) if neutrinos: fill(self.tree, 'n_nu', len(neutrinos)) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class ZHTreeProducer(Analyzer): def beginLoop(self, setup): super(ZHTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree( 'events', '') bookParticle(self.tree, 'zed') bookParticle(self.tree, 'recoil') bookJet(self.tree, 'jet1') bookJet(self.tree, 'jet2') bookJet(self.tree, 'jet3') bookJet(self.tree, 'jet4') bookLepton(self.tree, 'zed_1') bookLepton(self.tree, 'zed_2') bookParticle(self.tree, 'higgs') bookParticle(self.tree, 'higgs_1') bookParticle(self.tree, 'higgs_2') bookParticle(self.tree, 'misenergy') def process(self, event): self.tree.reset() recoil = getattr(event, self.cfg_ana.recoil) fillParticle(self.tree, 'recoil', recoil) misenergy = getattr(event, self.cfg_ana.misenergy) fillParticle(self.tree, 'misenergy', misenergy ) zeds = getattr(event, self.cfg_ana.zeds) if len(zeds)>0: zed = zeds[0] fillParticle(self.tree, 'zed', zed) fillLepton(self.tree, 'zed_1', zed.legs[0]) fillLepton(self.tree, 'zed_2', zed.legs[1]) jets = getattr(event, self.cfg_ana.jets) for ijet, jet in enumerate(jets): if ijet==4: break fillJet(self.tree, 'jet{ijet}'.format(ijet=ijet+1), jet) higgses = getattr(event, self.cfg_ana.higgses) if len(higgses)>0: higgs = higgses[0] fillParticle(self.tree, 'higgs', higgs) fillLepton(self.tree, 'higgs_1', higgs.legs[0]) fillLepton(self.tree, 'higgs_2', higgs.legs[1]) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class ParticleTreeProducer(Analyzer): def beginLoop(self, setup): super(ParticleTreeProducer, self).beginLoop(setup) self.rootfile = TFile("/".join([self.dirName, "tree.root"]), "recreate") self.tree = Tree("particles", "") bookParticle(self.tree, "ptc") bookCluster(self.tree, "ptc_ecal") bookParticle(self.tree, "ptc_match") var(self.tree, "dr") bookParticle(self.tree, "ptc_match_211") var(self.tree, "dr_211") bookParticle(self.tree, "ptc_match_130") var(self.tree, "dr_130") bookParticle(self.tree, "ptc_match_22") var(self.tree, "dr_22") def process(self, event): particles = getattr(event, self.cfg_ana.particles) for ptc in particles: self.tree.reset() fillParticle(self.tree, "ptc", ptc) m211 = m22 = False # if hasattr(ptc, 'clusters'): # # sim particle # ecal = ptc.clusters.get('ecal_in', None) # if ecal: # fillCluster(self.tree, 'ptc_ecal', ecal) if hasattr(ptc, "match") and ptc.match: fillParticle(self.tree, "ptc_match", ptc.match) fill(self.tree, "dr", ptc.dr) if hasattr(ptc, "match_211") and ptc.match_211: m211 = True fillParticle(self.tree, "ptc_match_211", ptc.match_211) fill(self.tree, "dr_211", ptc.dr_211) if hasattr(ptc, "match_130") and ptc.match_130: fillParticle(self.tree, "ptc_match_130", ptc.match_130) fill(self.tree, "dr_130", ptc.dr_130) if hasattr(ptc, "match_22") and ptc.match_22: m22 = True fillParticle(self.tree, "ptc_match_22", ptc.match_22) fill(self.tree, "dr_22", ptc.dr_22) # if m22 and not m211: # print event # import pdb; pdb.set_trace() self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class HTo4lGenTreeProducer(Analyzer): def beginLoop(self, setup): super(HTo4lGenTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree( 'events', '') self.tree.var('weight', float) bookParticle(self.tree, 'lep1vsPt') bookParticle(self.tree, 'lep2vsPt') bookParticle(self.tree, 'lep3vsPt') bookParticle(self.tree, 'lep4vsPt') bookParticle(self.tree, 'lep1vsEta') bookParticle(self.tree, 'lep2vsEta') bookParticle(self.tree, 'lep3vsEta') bookParticle(self.tree, 'lep4vsEta') def process(self, event): self.tree.reset() gen_leptons = getattr(event, self.cfg_ana.leptons) self.tree.fill('weight' , event.weight ) if len(gen_leptons) >= 4: gen_leptons.sort(key=lambda x: x.pt(), reverse=True) fillParticle(self.tree, 'lep1vsPt', gen_leptons[0]) fillParticle(self.tree, 'lep2vsPt', gen_leptons[1]) fillParticle(self.tree, 'lep3vsPt', gen_leptons[2]) fillParticle(self.tree, 'lep4vsPt', gen_leptons[3]) gen_leptons.sort(key=lambda x: abs(x.eta())) fillParticle(self.tree, 'lep1vsEta', gen_leptons[0]) fillParticle(self.tree, 'lep2vsEta', gen_leptons[1]) fillParticle(self.tree, 'lep3vsEta', gen_leptons[2]) fillParticle(self.tree, 'lep4vsEta', gen_leptons[3]) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class TreeProducer(Analyzer): def beginLoop(self, setup): super(TreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree( 'events', '') self.taggers = 'b' bookJet(self.tree, 'jet1', self.taggers) bookJet(self.tree, 'jet2', self.taggers) bookJet(self.tree, 'jet3', self.taggers) bookJet(self.tree, 'jet4', self.taggers) bookParticle(self.tree, 'misenergy') bookParticle(self.tree, 'higgs') bookParticle(self.tree, 'zed') bookLepton(self.tree, 'lepton1') bookLepton(self.tree, 'lepton2') def process(self, event): self.tree.reset() misenergy = getattr(event, self.cfg_ana.misenergy) fillParticle(self.tree, 'misenergy', misenergy ) jets = getattr(event, self.cfg_ana.jets) for ijet, jet in enumerate(jets): if ijet==4: break fillJet(self.tree, 'jet{ijet}'.format(ijet=ijet+1), jet, self.taggers) higgs = getattr(event, self.cfg_ana.higgs) if higgs: fillParticle(self.tree, 'higgs', higgs) zed = getattr(event, self.cfg_ana.zed) if zed: fillParticle(self.tree, 'zed', zed) leptons = getattr(event, self.cfg_ana.leptons) for ilep, lepton in enumerate(reversed(leptons)): if ilep == 2: break fillLepton(self.tree, 'lepton{ilep}'.format(ilep=ilep+1), lepton) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class TreeProducer(Analyzer): def beginLoop(self, setup): super(TreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree('events', '') self.tree.var('weight', float) #self.tree.var('met', float) bookParticle(self.tree, 'higgs') bookParticle(self.tree, 'zed') bookParticle(self.tree, 'l1') bookParticle(self.tree, 'l2') bookParticle(self.tree, 'a') bookMet(self.tree, 'met') def process(self, event): self.tree.reset() zeds = getattr(event, self.cfg_ana.zeds) zeds.sort(key=lambda x: abs(x.m() - 91.)) photons = getattr(event, self.cfg_ana.photons) photons.sort(key=lambda x: x.pt(), reverse=True) leptons = [] if len(zeds) > 0 and len(photons) > 0: higgs = Resonance(zeds[0], photons[0], 25) self.tree.fill('weight', event.weight) # Reco Higgs fillParticle(self.tree, 'higgs', higgs) fillParticle(self.tree, 'zed', zeds[0]) fillMet(self.tree, 'met', event.met) leptons.append(zeds[0].legs[0]) leptons.append(zeds[0].legs[1]) leptons.sort(key=lambda x: x.pt(), reverse=True) fillLepton(self.tree, 'l1', leptons[0]) fillLepton(self.tree, 'l2', leptons[1]) fillLepton(self.tree, 'a', photons[0]) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class ZHTreeProducer2(Analyzer): def _book(self, book_fun, cfg, *args, **kwargs): for label, n in cfg: var(self.tree, mkl(label)) for i in range(n): book_fun(self.tree, mkl(label, i), *args, **kwargs) def _fill(self, fill_fun, cfg, event, *args, **kwargs): for label, n in cfg: ptcs = getattr(event, label) if not hasattr(ptcs, '__len__'): ptcs = [ptcs] fill(self.tree, mkl(label), len(ptcs)) for i, ptc in enumerate(ptcs): if i == n: break fill_fun(self.tree, mkl(label, i), ptc, *args, **kwargs) def beginLoop(self, setup): super(ZHTreeProducer2, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree( 'events', '') self._book(bookParticle, self.cfg_ana.particles) self.taggers = ['b', 'bmatch', 'bfrac'] self._book(bookJet, self.cfg_ana.jets, self.taggers) self.iso = False self._book(bookResonanceWithLegs, self.cfg_ana.resonances, self.iso) self._book(bookIsoParticle, self.cfg_ana.iso_particles) def process(self, event): self.tree.reset() self._fill(fillParticle, self.cfg_ana.particles, event) self._fill(fillJet, self.cfg_ana.jets, event, self.taggers) self._fill(fillResonanceWithLegs, self.cfg_ana.resonances, event, self.iso) self._fill(fillIsoParticle, self.cfg_ana.iso_particles, event) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class WeightTreeProducer(Analyzer): def beginLoop(self, setup): super(WeightTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'weight_tree.root']), 'recreate') self.tree = Tree('events', '') self.tree.var('weight', float) def process(self, event): self.tree.reset() self.tree.fill('weight', event.weight) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class ZTreeProducer(Analyzer): def beginLoop(self, setup): super(ZTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'mytree.root']), 'recreate') self.tree = Tree('events', '') bookParticle(self.tree, 'zed') #bookParticle(self.tree, 'recoil') bookJet(self.tree, 'zed_1') bookJet(self.tree, 'zed_2') #bookJet(self.tree, 'jet3') #bookJet(self.tree, 'jet4') #bookLepton(self.tree, 'zed_1') #bookLepton(self.tree, 'zed_2') #bookParticle(self.tree, 'higgs') #bookParticle(self.tree, 'higgs_1') #bookParticle(self.tree, 'higgs_2') #bookParticle(self.tree, 'misenergy') def process(self, event): self.tree.reset() #recoil = getattr(event, self.cfg_ana.recoil) #fillParticle(self.tree, 'recoil', recoil) #misenergy = getattr(event, self.cfg_ana.misenergy) #fillParticle(self.tree, 'misenergy', misenergy ) zeds = getattr(event, self.cfg_ana.zeds) if len(zeds) > 0: zed = zeds[0] fillParticle(self.tree, 'zed', zed) fillJet(self.tree, 'zed_1', zed.legs[0]) fillJet(self.tree, 'zed_2', zed.legs[1]) #jets = getattr(event, self.cfg_ana.jets) #for ijet, jet in enumerate(jets): # if ijet==4: # break # fillJet(self.tree, 'jet{ijet}'.format(ijet=ijet+1), jet) #higgses = getattr(event, self.cfg_ana.higgses) #if len(higgses)>0: # higgs = higgses[0] # fillParticle(self.tree, 'higgs', higgs) # fillLepton(self.tree, 'higgs_1', higgs.legs[0]) # fillLepton(self.tree, 'higgs_2', higgs.legs[1]) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class TreeProducer(Analyzer): def beginLoop(self, setup): super(TreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree('events', '') self.tree.var('weight', float) #add the Ht variable self.tree.var('Ht', float) self.tree.var('rapd', float) bookParticle(self.tree, 'jet1') bookParticle(self.tree, 'jet2') bookParticle(self.tree, 'jet3') bookMet(self.tree, 'met') def process(self, event): self.tree.reset() self.tree.fill('weight', event.weight) met = getattr(event, self.cfg_ana.met) fillMet(self.tree, 'met', met) # getting the untrimmed jets jj = getattr(event, 'jets') # filling Ht ht = 0 for ijets, j in enumerate(jj): ht = ht + j.pt() self.tree.fill('Ht', ht) jets = getattr(event, self.cfg_ana.jets) rap = np.absolute(jets[0].eta() - jets[1].eta()) self.tree.fill('rapd', rap) for ijet, jet in enumerate(jets): if ijet == 3: break fillParticle(self.tree, 'jet{ijet}'.format(ijet=ijet + 1), jet) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class TreeProducer(Analyzer): def beginLoop(self, setup): super(TreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree( 'events', '') self.tree.var('tau1', float) self.tree.var('tau2', float) self.tree.var('tau3', float) self.tree.var('tau32', float) self.tree.var('tau31', float) self.tree.var('tau21', float) bookParticle(self.tree, 'Jet') bookParticle(self.tree, 'softDroppedJet') bookParticle(self.tree, 'leadingSoftDroppedSubJet') bookParticle(self.tree, 'trailingSoftDroppedSubJet') def process(self, event): self.tree.reset() jets = getattr(event, self.cfg_ana.fatjets) # store leading (fat) jet observables if len(jets) > 0 and len(jets[0].subjetsSoftDrop) > 2: self.tree.fill('tau1' , jets[0].tau1 ) self.tree.fill('tau2' , jets[0].tau2 ) self.tree.fill('tau3' , jets[0].tau3 ) self.tree.fill('tau31' , jets[0].tau3/jets[0].tau1 ) self.tree.fill('tau32' , jets[0].tau3/jets[0].tau2 ) self.tree.fill('tau21' , jets[0].tau2/jets[0].tau1 ) fillParticle(self.tree, 'Jet', jets[0]) # first subjet entry is the cleaned jet itself fillParticle(self.tree, 'softDroppedJet', jets[0].subjetsSoftDrop[0]) fillParticle(self.tree, 'leadingSoftDroppedSubJet', jets[0].subjetsSoftDrop[1]) fillParticle(self.tree, 'trailingSoftDroppedSubJet', jets[0].subjetsSoftDrop[2]) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class TreeProducer(Analyzer): def beginLoop(self, setup): super(TreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree('events', '') self.tree.var('weight', float) #self.tree.var('met', float) self.tree.var('nljets', float) self.tree.var('nbjets', float) self.tree.var('njets', float) bookParticle(self.tree, 'higgs') bookParticle(self.tree, 'a1') bookParticle(self.tree, 'a2') bookMet(self.tree, 'met') def process(self, event): self.tree.reset() higgses = getattr(event, self.cfg_ana.higgses) higgses.sort(key=lambda x: x.legs[0].pt() + x.legs[1].pt(), reverse=True) leptons = [] if len(higgses) > 0: self.tree.fill('weight', event.weight) # Reco Higgs higgs = higgses[0] fillParticle(self.tree, 'higgs', higgs) fillMet(self.tree, 'met', event.met) fillLepton(self.tree, 'a1', higgses[0].legs[0]) fillLepton(self.tree, 'a2', higgses[0].legs[1]) self.tree.fill('nbjets', len(event.selected_bs)) self.tree.fill('nljets', len(event.selected_lights)) self.tree.fill('njets', len(event.selected_lights) + len(event.selected_bs)) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class HTo4lGenTreeProducer(Analyzer): def beginLoop(self, setup): super(HTo4lGenTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree('events', '') self.tree.var('weight', float) bookParticle(self.tree, 'lep1vsPt') bookParticle(self.tree, 'lep2vsPt') bookParticle(self.tree, 'lep3vsPt') bookParticle(self.tree, 'lep4vsPt') bookParticle(self.tree, 'lep1vsEta') bookParticle(self.tree, 'lep2vsEta') bookParticle(self.tree, 'lep3vsEta') bookParticle(self.tree, 'lep4vsEta') def process(self, event): self.tree.reset() gen_leptons = getattr(event, self.cfg_ana.leptons) self.tree.fill('weight', event.weight) if len(gen_leptons) >= 4: gen_leptons.sort(key=lambda x: x.pt(), reverse=True) fillParticle(self.tree, 'lep1vsPt', gen_leptons[0]) fillParticle(self.tree, 'lep2vsPt', gen_leptons[1]) fillParticle(self.tree, 'lep3vsPt', gen_leptons[2]) fillParticle(self.tree, 'lep4vsPt', gen_leptons[3]) gen_leptons.sort(key=lambda x: abs(x.eta())) fillParticle(self.tree, 'lep1vsEta', gen_leptons[0]) fillParticle(self.tree, 'lep2vsEta', gen_leptons[1]) fillParticle(self.tree, 'lep3vsEta', gen_leptons[2]) fillParticle(self.tree, 'lep4vsEta', gen_leptons[3]) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class TreeProducer(Analyzer): def beginLoop(self, setup): super(TreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree( 'events', '') self.tree.var('weight', float) self.tree.var('met', float) self.tree.var('nljets', float) self.tree.var('nbjets', float) self.tree.var('njets', float) bookParticle(self.tree, 'z') bookParticle(self.tree, 'l1') bookParticle(self.tree, 'l2') bookMet(self.tree, 'met') def process(self, event): self.tree.reset() zeds = getattr(event, self.cfg_ana.zeds) if len(zeds) == 1: self.tree.fill('weight' , event.weight ) # Reco Higgs z = zeds[0] fillParticle(self.tree, 'z', z) fillMet(self.tree, 'met', event.met) fillLepton(self.tree, 'l1', z.legs[0]) fillLepton(self.tree, 'l2', z.legs[1]) self.tree.fill('nbjets' , len(event.selected_bs) ) self.tree.fill('nljets' , len(event.selected_lights) ) self.tree.fill('njets' , len(event.selected_lights) + len(event.selected_bs)) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class TreeProducer(Analyzer): def beginLoop(self, setup): super(TreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree('events', '') self.tree.var('weight', float) self.tree.var('nljets', float) self.tree.var('nbjets', float) self.tree.var('njets', float) self.tree.var('DiMuonInvMass', float) bookParticle(self.tree, 'higgs') bookParticle(self.tree, 'mu1') bookParticle(self.tree, 'mu2') bookMet(self.tree, 'met') def process(self, event): self.tree.reset() higgses = getattr(event, self.cfg_ana.higgses) if len(higgses) == 1: self.tree.fill('weight', event.weight) # Reco Higgs higgs = higgses[0] fillParticle(self.tree, 'higgs', higgs) fillMet(self.tree, 'met', event.met) fillLepton(self.tree, 'mu1', higgses[0].legs[0]) fillLepton(self.tree, 'mu2', higgses[0].legs[1]) self.tree.fill("DiMuonInvMass", higgses[0]._tlv.M()) self.tree.fill('nbjets', len(event.selected_bs)) self.tree.fill('nljets', len(event.selected_lights)) self.tree.fill('njets', len(event.selected_lights) + len(event.selected_bs)) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class GlobalEventTreeProducer(Analyzer): def beginLoop(self, setup): super(GlobalEventTreeProducer, self).beginLoop(setup) self.rootfile = TFile("/".join([self.dirName, "tree.root"]), "recreate") self.tree = Tree("events", "") bookJet(self.tree, "sum_all") bookJet(self.tree, "sum_all_gen") def process(self, event): self.tree.reset() sum_all = getattr(event, self.cfg_ana.sum_all) sum_all_gen = getattr(event, self.cfg_ana.sum_all_gen) fillJet(self.tree, "sum_all", sum_all) fillJet(self.tree, "sum_all_gen", sum_all_gen) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class TreeProducer(Analyzer): def beginLoop(self, setup): super(TreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree('events', '') self.taggers = 'b' bookJet(self.tree, 'jet1', self.taggers) bookJet(self.tree, 'jet2', self.taggers) bookJet(self.tree, 'jet3', self.taggers) bookJet(self.tree, 'jet4', self.taggers) bookParticle(self.tree, 'misenergy') bookParticle(self.tree, 'higgs') bookParticle(self.tree, 'zed') bookLepton(self.tree, 'lepton1') bookLepton(self.tree, 'lepton2') def process(self, event): self.tree.reset() misenergy = getattr(event, self.cfg_ana.misenergy) fillParticle(self.tree, 'misenergy', misenergy) jets = getattr(event, self.cfg_ana.jets) for ijet, jet in enumerate(jets): if ijet == 4: break fillJet(self.tree, 'jet{ijet}'.format(ijet=ijet + 1), jet, self.taggers) higgs = getattr(event, self.cfg_ana.higgs) if higgs: fillParticle(self.tree, 'higgs', higgs) zed = getattr(event, self.cfg_ana.zed) if zed: fillParticle(self.tree, 'zed', zed) leptons = getattr(event, self.cfg_ana.leptons) for ilep, lepton in enumerate(reversed(leptons)): if ilep == 2: break fillLepton(self.tree, 'lepton{ilep}'.format(ilep=ilep + 1), lepton) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class HTo4lTreeProducer(Analyzer): def beginLoop(self, setup): super(HTo4lTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree( 'events', '') bookParticle(self.tree, 'zed1') bookParticle(self.tree, 'zed2') bookLepton(self.tree, 'zed1_lep1') bookLepton(self.tree, 'zed1_lep2') bookLepton(self.tree, 'zed2_lep1') bookLepton(self.tree, 'zed2_lep2') bookParticle(self.tree, 'higgs') def process(self, event): self.tree.reset() zeds = getattr(event, self.cfg_ana.zeds) zeds.sort(key=lambda x: abs(x.m()-91.)) higgses = getattr(event, self.cfg_ana.higgses) if len(zeds) > 1: fillParticle(self.tree, 'zed1', zeds[0]) fillParticle(self.tree, 'zed2', zeds[1]) fillLepton(self.tree, 'zed1_lep1', zeds[0].legs[0]) fillLepton(self.tree, 'zed1_lep2', zeds[0].legs[1]) fillLepton(self.tree, 'zed2_lep1', zeds[1].legs[0]) fillLepton(self.tree, 'zed2_lep2', zeds[1].legs[1]) if len(higgses) > 0: higgs = higgses[0] fillParticle(self.tree, 'higgs', higgs) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class TreeProducer(Analyzer): def beginLoop(self, setup): super(TreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, self.cfg_ana.file_name]), 'recreate') self.tree = Tree('events', '') self.taggers = '' bookJet(self.tree, 'jet1', self.taggers) bookJet(self.tree, 'jet2', self.taggers) bookJet(self.tree, 'jet3', self.taggers) bookJet(self.tree, 'jet4', self.taggers) bookParticle(self.tree, 'W1') bookParticle(self.tree, 'W2') def process(self, event): self.tree.reset() Ws = getattr(event, self.cfg_ana.Ws) for iW, w in enumerate(Ws): if iW == 2: break if w.pdgid() == 24: fillParticle(self.tree, 'W1', w) else: fillParticle(self.tree, 'W2', w) jets = getattr(event, self.cfg_ana.jets) for ijet, jet in enumerate(jets): if ijet == 4: break fillJet(self.tree, 'jet{ijet}'.format(ijet=ijet + 1), jet, self.taggers) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class HiggsTreeProducer(Analyzer): def beginLoop(self, setup): super(HiggsTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree(self.cfg_ana.tree_name, self.cfg_ana.tree_title) bookZed(self.tree, 'ztomumu') bookZed(self.tree, 'higgstojj') def process(self, event): self.tree.reset() if len(event.ztomumu): fillZed(self.tree, 'ztomumu', event.ztomumu[0]) if len(event.higgstojj): fillZed(self.tree, 'higgstojj', event.higgstojj[0]) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class GlobalEventTreeProducer(Analyzer): def beginLoop(self, setup): super(GlobalEventTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree('events', '') bookJet(self.tree, 'sum_all') bookJet(self.tree, 'sum_all_gen') def process(self, event): self.tree.reset() sum_all = getattr(event, self.cfg_ana.sum_all) sum_all_gen = getattr(event, self.cfg_ana.sum_all_gen) fillJet(self.tree, 'sum_all', sum_all) fillJet(self.tree, 'sum_all_gen', sum_all_gen) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class GenTreeProducer(Analyzer): def beginLoop(self, setup): super(GenTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree('events', '') self.tree.var('weight', float) self.tree.var('nh', float) self.tree.var('drhh', float) bookParticle(self.tree, 'h1') bookParticle(self.tree, 'h2') bookParticle(self.tree, 'hh') def process(self, event): self.tree.reset() gen_higgses = getattr(event, self.cfg_ana.gen_higgses) self.tree.fill('weight', event.weight) self.tree.fill('nh', len(gen_higgses)) gen_higgses.sort(key=lambda x: x.pt(), reverse=True) if len(gen_higgses) > 1: hh = Resonance(gen_higgses[0], gen_higgses[1], 25) if hh.pt() > 500.: fillParticle(self.tree, 'h1', gen_higgses[0]) fillParticle(self.tree, 'h2', gen_higgses[1]) fillParticle(self.tree, 'hh', hh) drhh = deltaR(gen_higgses[0], gen_higgses[1]) self.tree.fill('drhh', drhh) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class GenRecTreeProducer(Analyzer): def beginLoop(self, setup): super(GenRecTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree('RecGen', '') for i in range(5): bookParticle(self.tree, 'gen_ptc{j}'.format(j=i)) bookParticle(self.tree, 'rec_ptc{j}'.format(j=i)) var(self.tree, 'nb_gen_ptc') var(self.tree, 'nb_rec_ptc') var(self.tree, 'event_gen_E') var(self.tree, 'event_rec_E') var(self.tree, 'iev') def process(self, event): gen_particles = sorted(getattr(event, self.cfg_ana.gen_particles), key = lambda x: x.e()) rec_particles = sorted(getattr(event, self.cfg_ana.rec_particles), key = lambda x: x.e()) self.tree.reset() for i in range(min(len(gen_particles), 5)): fillParticle(self.tree, 'gen_ptc{j}'.format(j=i), gen_particles[i]) for i in range(min(len(rec_particles), 5)): fillParticle(self.tree, 'rec_ptc{j}'.format(j=i), rec_particles[i]) fill(self.tree, 'nb_gen_ptc', len(gen_particles)) fill(self.tree, 'nb_rec_ptc', len(rec_particles)) gen_E, rec_E = 0, 0 for ptc in gen_particles: gen_E += ptc.e() for ptc in rec_particles: rec_E += ptc.e() fill(self.tree, 'event_gen_E', gen_E) fill(self.tree, 'event_rec_E', rec_E) fill(self.tree, 'iev', getattr(event, 'iEv')) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class GenRecTreeProducer(Analyzer): def beginLoop(self, setup): super(GenRecTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree('RecGen', '') for i in range(5): bookParticle(self.tree, 'gen_ptc{j}'.format(j=i)) bookParticle(self.tree, 'rec_ptc{j}'.format(j=i)) var(self.tree, 'nb_gen_ptc') var(self.tree, 'nb_rec_ptc') var(self.tree, 'event_gen_E') var(self.tree, 'event_rec_E') var(self.tree, 'iev') def process(self, event): gen_particles = sorted(getattr(event, self.cfg_ana.gen_particles), key=lambda x: x.e()) rec_particles = sorted(getattr(event, self.cfg_ana.rec_particles), key=lambda x: x.e()) self.tree.reset() for i in range(min(len(gen_particles), 5)): fillParticle(self.tree, 'gen_ptc{j}'.format(j=i), gen_particles[i]) for i in range(min(len(rec_particles), 5)): fillParticle(self.tree, 'rec_ptc{j}'.format(j=i), rec_particles[i]) fill(self.tree, 'nb_gen_ptc', len(gen_particles)) fill(self.tree, 'nb_rec_ptc', len(rec_particles)) gen_E, rec_E = 0, 0 for ptc in gen_particles: gen_E += ptc.e() for ptc in rec_particles: rec_E += ptc.e() fill(self.tree, 'event_gen_E', gen_E) fill(self.tree, 'event_rec_E', rec_E) fill(self.tree, 'iev', getattr(event, 'iEv')) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class LeptonTreeProducer(Analyzer): def beginLoop(self, setup): super(LeptonTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree(self.cfg_ana.tree_name, self.cfg_ana.tree_title) bookLepton(self.tree, 'lep1') bookLepton(self.tree, 'lep2') def process(self, event): self.tree.reset() leptons = getattr(event, self.cfg_ana.leptons) if len(leptons) > 0: fillLepton(self.tree, 'lep1', leptons[0]) if len(leptons) > 1: fillLepton(self.tree, 'lep2', leptons[1]) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class PapasTreeProducer(Analyzer): def beginLoop(self, setup): super(PapasTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName,'jet_tree.root']), 'recreate') self.tree = Tree( self.cfg_ana.tree_name, self.cfg_ana.tree_title ) bookJet(self.tree, 'jet1') bookJet(self.tree, 'jet1_rec') bookJet(self.tree, 'jet2') bookJet(self.tree, 'jet2_rec') var(self.tree, 'iEv') def process(self, event): self.tree.reset() jets = getattr(event, self.cfg_ana.jets) if hasattr(event, 'iEv'): fill(self.tree, 'iEv', event.iEv) else: import pdb; pdb.set_trace() if( len(jets)>0 ): jet = jets[0] comp211 = jet.constituents.get(211, None) if comp211: if comp211.num==2: import pdb; pdb.set_trace() fillJet(self.tree, 'jet1', jet) if jet.match: fillJet(self.tree, 'jet1_rec', jet.match) if( len(jets)>1 ): jet = jets[1] fillJet(self.tree, 'jet2', jet) if jet.match: fillJet(self.tree, 'jet2_rec', jet.match) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class HTo4lTreeProducer(Analyzer): def beginLoop(self, setup): super(HTo4lTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree('events', '') bookParticle(self.tree, 'zed1') bookParticle(self.tree, 'zed2') bookLepton(self.tree, 'zed1_lep1') bookLepton(self.tree, 'zed1_lep2') bookLepton(self.tree, 'zed2_lep1') bookLepton(self.tree, 'zed2_lep2') bookParticle(self.tree, 'higgs') def process(self, event): self.tree.reset() zeds = getattr(event, self.cfg_ana.zeds) zeds.sort(key=lambda x: abs(x.m() - 91.)) higgses = getattr(event, self.cfg_ana.higgses) if len(zeds) > 1: fillParticle(self.tree, 'zed1', zeds[0]) fillParticle(self.tree, 'zed2', zeds[1]) fillLepton(self.tree, 'zed1_lep1', zeds[0].legs[0]) fillLepton(self.tree, 'zed1_lep2', zeds[0].legs[1]) fillLepton(self.tree, 'zed2_lep1', zeds[1].legs[0]) fillLepton(self.tree, 'zed2_lep2', zeds[1].legs[1]) if len(higgses) > 0: higgs = higgses[0] fillParticle(self.tree, 'higgs', higgs) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class SimTrackTreeProducer(Analyzer): def beginLoop(self, setup): super(SimTrackTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'jet_tree.root']), 'recreate') self.tree = Tree( self.cfg_ana.tree_name, self.cfg_ana.tree_title ) bookSimTrack(self.tree, 'simtrack') var(self.tree, 'simtrack_len') def process(self, event): simtracks = getattr(event, self.cfg_ana.simtracks) for simtrack in simtracks: self.tree.reset() fillSimTrack(self.tree, 'simtrack', simtrack) fill(self.tree, 'simtrack_len', len(simtracks)) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class TTbarTreeProducer(Analyzer): def beginLoop(self, setup): super(TTbarTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree( 'events', '') bookParticle(self.tree, 'jet1') bookParticle(self.tree, 'jet2') bookParticle(self.tree, 'jet3') bookParticle(self.tree, 'm3') bookMet(self.tree, 'met') bookLepton(self.tree, 'lepton') def process(self, event): self.tree.reset() leptons = getattr(event, self.cfg_ana.leptons) if len(leptons)==0: return # NOT FILLING THE TREE IF NO LEPTON fillLepton(self.tree, 'lepton', leptons[0]) jets = getattr(event, self.cfg_ana.jets) for ijet, jet in enumerate(jets): if ijet==3: break fillParticle(self.tree, 'jet{ijet}'.format(ijet=ijet+1), jet) m3 = getattr(event, self.cfg_ana.m3) if m3: fillParticle(self.tree, 'm3', m3) met = getattr(event, self.cfg_ana.met) fillMet(self.tree, 'met', met) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class JetTreeProducer(Analyzer): '''Fill a tree with jet and jet component information Example:: from heppy.analyzers.JetTreeProducer import JetTreeProducer jet_tree = cfg.Analyzer( JetTreeProducer, tree_name = 'events', tree_title = 'jets', jets = 'jets', taggers = ['b','bmatch','bfrac'] njets = 2, store_match = True ) Variables in the tree, for the first two jets in the input jet collection. - jet p4 - for each component (charged hadrons, neutral hadrons, photons, ...): - number of such particles of this type - sum pT of these particles - sum E of these particles Same quantities for the matched jet. To get the matched jet, run a Matcher on these jets before the JetTreeProducer, See heppy.test.jet_tree_sequence_cff for more information @param tree_name: name of the tree in the output root file @param tree_title: title of the tree @jets: input jet collection @taggers: list of jet tags to store @njets: number of jets to store @store_match: True/False: whether to store matched jet or not. ''' def beginLoop(self, setup): '''create the output root file and book the tree. ''' super(JetTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'jet_tree.root']), 'recreate') self.tree = Tree( self.cfg_ana.tree_name, self.cfg_ana.tree_title ) for ijet in range(self.cfg_ana.njets): bookJet(self.tree, 'jet{}'.format(ijet), self.cfg_ana.taggers) bookJet(self.tree, 'jet{}_match'.format(ijet)) var(self.tree, 'event') var(self.tree, 'lumi') var(self.tree, 'run') def process(self, event): '''process the event. The event must contain: - self.cfg_ana.jets: the jet collection to be studied. ''' self.tree.reset() if hasattr(event, 'eventId'): # the CMS case fill(self.tree, 'event', event.eventId) fill(self.tree, 'lumi', event.lumi) fill(self.tree, 'run', event.run) elif hasattr(event, 'iEv'): fill(self.tree, 'event', event.iEv) jets = getattr(event, self.cfg_ana.jets) for ijet in range(self.cfg_ana.njets): if ijet == len(jets): break jet = jets[ijet] fillJet(self.tree, 'jet{}'.format(ijet), jet, self.cfg_ana.taggers) if hasattr(jet, 'match') and jet.match: fillJet(self.tree, 'jet{}_match'.format(ijet), jet.match) self.tree.tree.Fill() def write(self, setup): '''write root file. ''' self.rootfile.Write() self.rootfile.Close()
class GenRecAnalysisTreeProducer(Analyzer): def beginLoop(self, setup): super(GenRecAnalysisTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'tree.root']), 'recreate') self.tree = Tree('RecGen', '') bookParticle(self.tree, 'gen_ptc') for i in range(5): bookParticle(self.tree, 'rec_ptc{j}'.format(j=i)) bookJet(self.tree, 'rec_jet') bookJet(self.tree, 'gen_jet') var(self.tree, 'n_photons') var(self.tree, 'n_PI') var(self.tree, 'n_K0') var(self.tree, 'n_other') var(self.tree, 'n_rec_ptc') var(self.tree, 'event_gen_E') var(self.tree, 'event_rec_E') var(self.tree, 'iev') var(self.tree, 'cone_size') def process(self, event): gen_particle = getattr(event, self.cfg_ana.gen_particles)[0] #rec_particles = sorted(inConeCollection( # gen_particle, # getattr(event, self.cfg_ana.rec_particles), # 2 # ), # key = lambda x: x.e()) rec_particles = sorted(getattr(event, self.cfg_ana.rec_particles), key = lambda x: x.e()) self.tree.reset() fillParticle(self.tree, 'gen_ptc', gen_particle) nphotons, npi, nk0, nother, nrecptc, gen_E, rec_E = [0]*7 gen_E = gen_particle.e() for ptc in rec_particles: rec_E += ptc.e() for i in range(min(len(rec_particles), 5)): fillParticle(self.tree, 'rec_ptc{j}'.format(j=i), rec_particles[i]) pdgid = abs(rec_particles[i].pdgid()) nrecptc+=1 if pdgid == 211: npi+=1 elif pdgid == 22: nphotons+=1 elif pdgid == 130: nk0+=1 else : nother+=1 fill(self.tree, 'n_photons', nphotons) fill(self.tree, 'n_PI', npi) fill(self.tree, 'n_K0', nk0) fill(self.tree, 'n_other', nother) fill(self.tree, 'n_rec_ptc', nrecptc) fill(self.tree, 'event_gen_E', gen_E) fill(self.tree, 'event_rec_E', rec_E) fill(self.tree, 'iev', getattr(event, 'iEv')) if rec_particles == []: fill(self.tree,'cone_size', -1.) else : fill(self.tree, 'cone_size', max([deltaR(gen_particle, rec_ptc) for rec_ptc in rec_particles]) ) rec_jet = getattr(event, self.cfg_ana.rec_jet) if rec_jet: fillJet(self.tree, 'rec_jet', rec_jet[0]) if hasattr(rec_jet[0], 'match') and rec_jet[0].match is not None: fillJet(self.tree, 'gen_jet', rec_jet[0].match) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()
class JetTreeProducer(Analyzer): '''Fill a tree with jet and jet component information Example:: from heppy.analyzers.JetTreeProducer import JetTreeProducer jet_tree = cfg.Analyzer( JetTreeProducer, tree_name = 'events', tree_title = 'jets', jets = 'gen_jets' ) Variables in the tree, for the first two jets in the input jet collection. - jet p4 - for each component (charged hadrons, neutral hadrons, photons, ...): - number of such particles of this type - sum pT of these particles - sum E of these particles If you want these quantities for the jets matched to your input jets, run a Matcher on these jets before the JetTreeProducer. See heppy.test.jet_tree_sequence_cff for more information @param tree_name: name of the tree in the output root file @param tree_title: title of the tree @jets: input jet collection ''' def beginLoop(self, setup): '''create the output root file and book the tree. ''' self.rootfile = TFile('/'.join([self.dirName, 'jet_tree.root']), 'recreate') self.tree = Tree( self.cfg_ana.tree_name, self.cfg_ana.tree_title ) bookJet(self.tree, 'jet1') bookJet(self.tree, 'jet1_match') bookJet(self.tree, 'jet2') bookJet(self.tree, 'jet2_match') var(self.tree, 'event') var(self.tree, 'lumi') var(self.tree, 'run') def process(self, event): '''process the event. The event must contain: - self.cfg_ana.jets: the jet collection to be studied. ''' self.tree.reset() if hasattr(event, 'eventId'): fill(self.tree, 'event', event.eventId) fill(self.tree, 'lumi', event.lumi) fill(self.tree, 'run', event.run) elif hasattr(event, 'iEv'): fill(self.tree, 'event', event.iEv) jets = getattr(event, self.cfg_ana.jets) if( len(jets)>0 ): jet = jets[0] comp211 = jet.constituents.get(211, None) if comp211: if comp211.num==2: import pdb; pdb.set_trace() fillJet(self.tree, 'jet1', jet) if hasattr(jet, 'match') and jet.match: fillJet(self.tree, 'jet1_match', jet.match) # if jet.e()/jet.match.e() > 2.: # import pdb; pdb.set_trace() if( len(jets)>1 ): jet = jets[1] fillJet(self.tree, 'jet2', jet) if hasattr(jet, 'match') and jet.match: fillJet(self.tree, 'jet2_match', jet.match) self.tree.tree.Fill() def write(self, setup): '''write root file. ''' self.rootfile.Close()
class JetConeTreeProducer(Analyzer): def beginLoop(self, setup): super(JetConeTreeProducer, self).beginLoop(setup) self.rootfile = TFile('/'.join([self.dirName, 'jet_tree.root']), 'recreate') self.tree = Tree( self.cfg_ana.tree_name, self.cfg_ana.tree_title ) bookJet(self.tree, 'papasjet') bookJet(self.tree, 'cmsjet') # bookJet(self.tree, 'papas_control_jet') # bookJet(self.tree, 'cms_control_jet') bookJet(self.tree, 'gen_jet') # bookJet(self.tree, 'simtrack') var(self.tree, 'simtrack_len') var(self.tree, 'event_id') bookParticles(self.tree, 'tagged', 150) bookParticles(self.tree, 'nottagged', 150) var(self.tree, '130tagged') var(self.tree, '22tagged') var(self.tree, '130nottagged') var(self.tree, '22nottagged') var(self.tree, '11tagged') var(self.tree, 'othertagged') var(self.tree, 'threshold_pass') bookParticles(self.tree, 'cms_ptcs', 150) def process(self, event): self.tree.reset() papasjet = getattr(event, self.cfg_ana.rec_jet, None) cmsjet = getattr(event, self.cfg_ana.pf_jet, None) # papas_control_jet = getattr(event, self.cfg_ana.rec_control_jet, None) # cms_control_jet = getattr(event, self.cfg_ana.pf_control_jet, None) gen_jet = getattr(event, self.cfg_ana.gen_jet, None) sim_track_ptcs = getattr(event, self.cfg_ana.sim_track, None) cms_ptcs = getattr(event, self.cfg_ana.pf_ptcs, []) if papasjet: fillJet(self.tree, 'papasjet', papasjet) if cmsjet: fillJet(self.tree, 'cmsjet', cmsjet) # if papas_control_jet: # fillJet(self.tree, 'papas_control_jet', papas_control_jet) # if cms_control_jet: # fillJet(self.tree, 'cms_control_jet', cms_control_jet) if gen_jet: fillJet(self.tree, 'gen_jet', gen_jet) if sim_track_ptcs: fill(self.tree, 'simtrack_len', len(sim_track_ptcs)) fillParticles(self.tree, 'cms_ptcs', cms_ptcs) fill(self.tree, 'event_id', event.input.eventAuxiliary().id().event()) fillParticles(self.tree, 'tagged', event.tagged_particles) fillParticles(self.tree, 'nottagged', event.nottagged_particles) fill(self.tree, '130tagged', 1 if event.tagged130 else 0) fill(self.tree, '22tagged', 1 if event.tagged22 else 0) fill(self.tree, '130nottagged', 1 if event.nottagged130 else 0) fill(self.tree, '22nottagged', 1 if event.nottagged22 else 0) fill(self.tree, '11tagged', 1 if event.tagged11 else 0) fill(self.tree, 'othertagged', 1 if event.taggedother else 0) fill(self.tree, 'threshold_pass', 1 if event.threshold_pass else 0) self.tree.tree.Fill() def write(self, setup): self.rootfile.Write() self.rootfile.Close()