ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/Betchart/TopRefTuple/python/tuple.py
Revision: 1.18
Committed: Fri Jan 11 21:45:47 2013 UTC (12 years, 3 months ago) by bbetchar
Content type: text/x-python
Branch: MAIN
CVS Tags: V00-02-02, V00-02-01, V00-02-00
Changes since 1.17: +2 -2 lines
Log Message:
use correct jets for met and smearing (all patJets pt>10)

File Contents

# Content
1 import math,os
2 from FWCore.ParameterSet import Config as cms
3
4 def tags(stuff) :
5 return ( cms.InputTag(stuff) if type(stuff)!=list else
6 cms.VInputTag([tags(item) for item in stuff]) )
7
8 class Tuple(object) :
9
10 def __init__(self,process,options) :
11 self.process = process
12 self.options = options
13 self.empty = process.empty = cms.Sequence()
14
15 def path(self) :
16 return cms.Path( self.events() *
17 self.exists() *
18 self.gen() *
19 self.triggers() *
20 self.electron() *
21 self.muon() *
22 self.met() *
23 self.jet() *
24 self.tree() )
25
26 def attr(self, item) : return getattr(self.process, item)
27
28 def tree(self) :
29 self.process.topRef = cms.EDAnalyzer( "TreeMaker", outputCommands = cms.untracked.vstring(
30 'drop *',
31 'keep *_tuple*_*_*',
32 'keep double_kt6PFJets_rho_RECO') )
33 return self.process.topRef
34
35 def events(self) :
36 self.process.tupleEvents = cms.EDProducer("Tuple_Event",
37 vertexTag = tags("goodOfflinePrimaryVertices"))
38 return self.empty + self.process.tupleEvents
39
40 def exists(self) :
41 self.process.tupleExists = cms.EDProducer("Tuple_ProductExists",
42 products = tags(["mvaTrigV0"]))
43 return self.empty + self.process.tupleExists
44
45 def gen(self) :
46 if self.options.isData : return self.empty
47 self.process.tupleGen = cms.EDProducer("Tuple_GenParticle",
48 InputTag = tags('genParticles'),
49 JetCollections = tags([]),
50 Prefix = cms.string('gen'),
51 Suffix = cms.string(''),
52 GenStatus1PtCut = cms.double(1000.0),
53 GenJetPtCut = cms.double(10.0),
54 OnlyStatus3 = cms.bool(True)
55 )
56 self.process.tuplePileup = cms.EDProducer("Tuple_PileupSummary",
57 InputTag = tags('addPileupInfo'),
58 Prefix = cms.string('pileup'),
59 Suffix = cms.string('')
60 )
61 return self.empty + self.process.tupleGen + self.process.tuplePileup
62
63 def triggers(self) :
64 if not self.options.isData : return self.empty
65 self.process.tupleTriggers = cms.EDProducer("Tuple_Triggers",
66 InputTag = tags('TriggerResults'),
67 TriggerEventInputTag = tags('hltTriggerSummaryAOD'),
68 )
69 return self.empty + self.process.tupleTriggers
70
71 def electron(self) :
72 self.process.tupleElectron = cms.EDProducer("Tuple_Electron",
73 electronTag = tags('selectedPatElectrons'+self.options.postfix),
74 vertexTag = tags('goodOfflinePrimaryVertices'),
75 prefix = cms.string('el'),
76 electronIDs = cms.vstring('mvaTrigV0')
77 )
78 return self.empty + self.process.tupleElectron
79
80
81 def muon(self) :
82 self.process.tupleMuon = cms.EDProducer("Tuple_Muon",
83 muonTag = tags('selectedPatMuons'+self.options.postfix),
84 vertexTag = tags('goodOfflinePrimaryVertices'),
85 prefix = cms.string('mu') )
86 return self.empty + self.process.tupleMuon
87
88 def met(self) :
89 self.process.tupleMET = cms.EDProducer("Tuple_PatMET",
90 metTag = tags("patMETs"+self.options.postfix),
91 prefix = cms.string("met"),
92 particlesTag = tags("particleFlow"),
93 particlesPrefix = cms.string('pf')
94 )
95 return self.empty + self.process.tupleMET
96
97 def jet(self) :
98 jetResFile = '%s/src/CondFormats/JetMETObjects/data/Spring10_PtResolution_AK5PF.txt'%os.environ['CMSSW_RELEASE_BASE']
99 self.process.tupleJet = cms.EDProducer("Tuple_PatJet",
100 prefix = cms.string("jet"),
101 jetsTag = tags("selectedPatJetsForAnalysis"),
102 allJetsTag = tags("selectedPatJets"+self.options.postfix),
103 jecRecord = cms.string("AK5PFchs"),
104 bTags = cms.vstring(self.options.btags),
105 pfInfo = cms.bool(True),
106 genInfo = cms.bool( not self.options.isData),
107 jetResolutionFile = cms.string(jetResFile.split('/')[-1]),
108
109 # https://twiki.cern.ch/twiki/bin/view/CMS/JetResolution
110 resolutionRatioBins = cms.vdouble(0.0, 0.5, 1.1, 1.7, 2.3, 5.0),
111 resolutionRatio = cms.vdouble(1.052, 1.057, 1.096, 1.134, 1.288),
112 resolutionRatioErr = cms.vdouble( math.sqrt( 0.012**2 + 0.0615**2 ),
113 math.sqrt( 0.012**2 + 0.0555**2 ),
114 math.sqrt( 0.017**2 + 0.0625**2 ),
115 math.sqrt( 0.035**2 + 0.086**2 ),
116 math.sqrt( 0.127**2 + 0.154**2 )
117 )
118 )
119 os.system("cp %s ."%jetResFile)
120 return self.empty + self.process.tupleJet