ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/Betchart/TopRefTuple/python/tuple.py
Revision: 1.14
Committed: Fri Nov 16 19:10:31 2012 UTC (12 years, 5 months ago) by bbetchar
Content type: text/x-python
Branch: MAIN
CVS Tags: V00-01-03, V00-01-02, V00-01-01, V00-01-00
Changes since 1.13: +7 -4 lines
Log Message:
move copying of jetres file to python config rather than setup script.

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