CMS 3D CMS Logo

ntuple.py
Go to the documentation of this file.
1 #!/bin/env python
2 from __future__ import print_function
3 import six
4 
5 def var( tree, varName, type=float ):
6  tree.var(varName, type)
7 
8 def fill( tree, varName, value ):
9  tree.fill( varName, value )
10 
11 # event information
12 
13 def bookEvent(tree):
14  var(tree, 'run')
15  var(tree, 'lumi')
16  var(tree, 'event')
17 
18 def fillEvent(tree, event):
19  fill(tree, 'run', event.run)
20  fill(tree, 'lumi', event.lumi)
21  fill(tree, 'event', event.eventId)
22 
23 
24 # simple particle
25 
26 def bookParticle( tree, pName ):
27  var(tree, '{pName}_pdgid'.format(pName=pName))
28  var(tree, '{pName}_e'.format(pName=pName))
29  var(tree, '{pName}_pt'.format(pName=pName))
30  var(tree, '{pName}_eta'.format(pName=pName))
31  var(tree, '{pName}_phi'.format(pName=pName))
32  var(tree, '{pName}_m'.format(pName=pName))
33  var(tree, '{pName}_q'.format(pName=pName))
34 
35 def fillParticle( tree, pName, particle ):
36  fill(tree, '{pName}_pdgid'.format(pName=pName), particle.pdgId() )
37  fill(tree, '{pName}_e'.format(pName=pName), particle.energy() )
38  fill(tree, '{pName}_pt'.format(pName=pName), particle.pt() )
39  fill(tree, '{pName}_eta'.format(pName=pName), particle.eta() )
40  fill(tree, '{pName}_phi'.format(pName=pName), particle.phi() )
41  fill(tree, '{pName}_m'.format(pName=pName), particle.mass() )
42  fill(tree, '{pName}_q'.format(pName=pName), particle.charge() )
43 
44 def bookMet(tree, pName):
45  var(tree, '{pName}_pt'.format(pName=pName))
46  var(tree, '{pName}_phi'.format(pName=pName))
47  var(tree, '{pName}_sumet'.format(pName=pName))
48 
49 def fillMet(tree, pName, met):
50  fill(tree, '{pName}_pt'.format(pName=pName), met.pt())
51  fill(tree, '{pName}_phi'.format(pName=pName), met.phi())
52  fill(tree, '{pName}_sumet'.format(pName=pName), met.sumEt())
53 
54 def bookGenTau(tree, pName, pfdiscs, calodiscs):
55  bookJet(tree, pName)
56  bookTau(tree, '{pName}_calo'.format(pName=pName), calodiscs)
57  bookTau(tree, '{pName}_pf'.format(pName=pName), pfdiscs)
58  bookJet(tree, '{pName}_pfjet'.format(pName=pName))
59 
60 def fillGenTau(tree, pName, tau):
61  fillJet(tree, pName, tau)
62  fillTau(tree, '{pName}_calo'.format(pName=pName), tau.match_calo)
63  fillTau(tree, '{pName}_pf'.format(pName=pName), tau.match_pf)
64  fillJet(tree, '{pName}_pfjet'.format(pName=pName), tau.match_pfjet)
65 
66 
67 def bookTau(tree, pName, discNames):
68  bookParticle(tree, pName)
69  var(tree, '{pName}_nsigcharged'.format(pName=pName))
70  var(tree, '{pName}_isolation'.format(pName=pName))
71  for discName in discNames:
72  var(tree, '{pName}_{disc}'.format(pName=pName,
73  disc=discName))
74 
75 def fillTau(tree, pName, tau):
76  if not tau: return
77  fillParticle(tree, pName, tau)
78  fill(tree, '{pName}_nsigcharged'.format(pName=pName), len(tau.signalCharged()))
79  fill(tree, '{pName}_isolation'.format(pName=pName), tau.isolation())
80  for discName, value in six.iteritems(tau.discs):
81  fill(tree, '{pName}_{disc}'.format(pName=pName,
82  disc=discName), value)
83 
84 
85 # jet
86 
87 def bookComponent( tree, pName ):
88  var(tree, '{pName}_e'.format(pName=pName))
89  var(tree, '{pName}_pt'.format(pName=pName))
90  var(tree, '{pName}_num'.format(pName=pName))
91 
92 def fillComponent(tree, pName, component):
93  fill(tree, '{pName}_e'.format(pName=pName), component.e() )
94  fill(tree, '{pName}_pt'.format(pName=pName), component.pt() )
95  fill(tree, '{pName}_num'.format(pName=pName), component.num() )
96 
97 
98 pdgids = [211, 22, 130, 11, 13]
99 
100 def bookJet( tree, pName ):
101  bookParticle(tree, pName )
102  for pdgid in pdgids:
103  bookComponent(tree, '{pName}_{pdgid:d}'.format(pName=pName, pdgid=pdgid))
104  # var(tree, '{pName}_npart'.format(pName=pName))
105 
106 def fillJet( tree, pName, jet ):
107  if not jet: return
108  fillParticle(tree, pName, jet )
109  for pdgid in pdgids:
110  component = jet.constituents.get(pdgid, None)
111  if component is not None:
112  fillComponent(tree,
113  '{pName}_{pdgid:d}'.format(pName=pName, pdgid=pdgid),
114  component )
115  else:
116  import pdb; pdb.set_trace()
117  print(jet)
118 
def var(tree, varName, type=float)
Definition: ntuple.py:5
def fillEvent(tree, event)
Definition: ntuple.py:18
S & print(S &os, JobReport::InputFile const &f)
Definition: JobReport.cc:66
def fillTau(tree, pName, tau)
Definition: ntuple.py:75
def bookEvent(tree)
Definition: ntuple.py:13
def fillGenTau(tree, pName, tau)
Definition: ntuple.py:60
def bookParticle(tree, pName)
Definition: ntuple.py:26
def fillJet(tree, pName, jet)
Definition: ntuple.py:106
def fillParticle(tree, pName, particle)
Definition: ntuple.py:35
def fillComponent(tree, pName, component)
Definition: ntuple.py:92
def bookJet(tree, pName)
Definition: ntuple.py:100
def bookTau(tree, pName, discNames)
Definition: ntuple.py:67
def bookComponent(tree, pName)
Definition: ntuple.py:87
def fill(tree, varName, value)
Definition: ntuple.py:8
def bookMet(tree, pName)
Definition: ntuple.py:44
def bookGenTau(tree, pName, pfdiscs, calodiscs)
Definition: ntuple.py:54
def fillMet(tree, pName, met)
Definition: ntuple.py:49