Exemplo n.º 1
0
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()
Exemplo n.º 2
0
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()
Exemplo n.º 3
0
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()
Exemplo n.º 4
0
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()
Exemplo n.º 6
0
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()
Exemplo n.º 7
0
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()
Exemplo n.º 8
0
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()
Exemplo n.º 9
0
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()
Exemplo n.º 11
0
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()
Exemplo n.º 13
0
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()
Exemplo n.º 14
0
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()
Exemplo n.º 15
0
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()
Exemplo n.º 17
0
 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()
Exemplo n.º 18
0
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()
Exemplo n.º 19
0
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()
Exemplo n.º 20
0
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()
Exemplo n.º 21
0
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()
Exemplo n.º 22
0
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()
Exemplo n.º 23
0
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()
Exemplo n.º 24
0
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()
Exemplo n.º 25
0
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()
Exemplo n.º 26
0
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()
Exemplo n.º 27
0
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()
Exemplo n.º 28
0
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()
Exemplo n.º 29
0
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()
Exemplo n.º 30
0
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()
Exemplo n.º 31
0
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()
Exemplo n.º 32
0
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()
Exemplo n.º 33
0
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()
Exemplo n.º 34
0
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()
Exemplo n.º 35
0
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()
Exemplo n.º 36
0
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()
Exemplo n.º 37
0
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()
Exemplo n.º 38
0
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()
Exemplo n.º 39
0
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()
Exemplo n.º 41
0
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()
Exemplo n.º 42
0
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()
Exemplo n.º 44
0
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()
Exemplo n.º 46
0
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()
Exemplo n.º 47
0
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()
Exemplo n.º 49
0
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()