ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/Betchart/TopRefTuple/python/tuple.py
Revision: 1.20
Committed: Fri Jan 25 00:01:24 2013 UTC (12 years, 3 months ago) by bbetchar
Content type: text/x-python
Branch: MAIN
CVS Tags: V00-03-02, V00-03-01, HEAD
Changes since 1.19: +0 -1 lines
Log Message:
keep trigger info even for simulation

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 import ROOT as r # precompile the dictionary to ship with CRAB
34 r.gInterpreter.GenerateDictionary('vector<ROOT::Math::LorentzVector<ROOT::Math::PtEtaPhiM4D<Double32_t> > >','vector;Math/LorentzVector.h')
35 return self.process.topRef
36
37 def events(self) :
38 self.process.tupleEvents = cms.EDProducer("Tuple_Event",
39 vertexTag = tags("goodOfflinePrimaryVertices"))
40 return self.empty + self.process.tupleEvents
41
42 def exists(self) :
43 self.process.tupleExists = cms.EDProducer("Tuple_ProductExists",
44 products = tags(["mvaTrigV0"]))
45 return self.empty + self.process.tupleExists
46
47 def gen(self) :
48 if self.options.isData : return self.empty
49 self.process.tupleGen = cms.EDProducer("Tuple_GenParticle",
50 InputTag = tags('genParticles'),
51 JetCollections = tags([]),
52 Prefix = cms.string('gen'),
53 Suffix = cms.string(''),
54 GenStatus1PtCut = cms.double(1000.0),
55 GenJetPtCut = cms.double(10.0),
56 OnlyStatus3 = cms.bool(True)
57 )
58 self.process.tuplePileup = cms.EDProducer("Tuple_PileupSummary",
59 InputTag = tags('addPileupInfo'),
60 Prefix = cms.string('pileup'),
61 Suffix = cms.string('')
62 )
63 return self.empty + self.process.tupleGen + self.process.tuplePileup
64
65 def triggers(self) :
66 self.process.tupleTriggers = cms.EDProducer("Tuple_Triggers",
67 InputTag = tags('TriggerResults'),
68 TriggerEventInputTag = tags('hltTriggerSummaryAOD'),
69 )
70 return self.empty + self.process.tupleTriggers
71
72 def electron(self) :
73 self.process.tupleElectron = cms.EDProducer("Tuple_Electron",
74 electronTag = tags('selectedPatElectrons'+self.options.postfix),
75 vertexTag = tags('goodOfflinePrimaryVertices'),
76 prefix = cms.string('el'),
77 electronIDs = cms.vstring('mvaTrigV0')
78 )
79 return self.empty + self.process.tupleElectron
80
81
82 def muon(self) :
83 self.process.tupleMuon = cms.EDProducer("Tuple_Muon",
84 muonTag = tags('selectedPatMuons'+self.options.postfix),
85 vertexTag = tags('goodOfflinePrimaryVertices'),
86 prefix = cms.string('mu') )
87 return self.empty + self.process.tupleMuon
88
89 def met(self) :
90 self.process.tupleMET = cms.EDProducer("Tuple_PatMET",
91 metTag = tags("patMETs"+self.options.postfix),
92 prefix = cms.string("met"),
93 particlesTag = tags("particleFlow"),
94 particlesPrefix = cms.string('pf')
95 )
96 return self.empty + self.process.tupleMET
97
98 def jet(self) :
99 jetResFile = '%s/src/CondFormats/JetMETObjects/data/Spring10_PtResolution_AK5PF.txt'%os.environ['CMSSW_RELEASE_BASE']
100 self.process.tupleJet = cms.EDProducer("Tuple_PatJet",
101 prefix = cms.string("jet"),
102 jetsTag = tags("selectedPatJetsForAnalysis"),
103 allJetsTag = tags("selectedPatJets"+self.options.postfix),
104 jecRecord = cms.string("AK5PFchs"),
105 bTags = cms.vstring(self.options.btags),
106 pfInfo = cms.bool(True),
107 genInfo = cms.bool( not self.options.isData),
108 jetResolutionFile = cms.string(jetResFile.split('/')[-1]),
109
110 # https://twiki.cern.ch/twiki/bin/view/CMS/JetResolution
111 resolutionRatioBins = cms.vdouble(0.0, 0.5, 1.1, 1.7, 2.3, 5.0),
112 resolutionRatio = cms.vdouble(1.052, 1.057, 1.096, 1.134, 1.288),
113 resolutionRatioErr = cms.vdouble( math.sqrt( 0.012**2 + 0.0615**2 ),
114 math.sqrt( 0.012**2 + 0.0555**2 ),
115 math.sqrt( 0.017**2 + 0.0625**2 ),
116 math.sqrt( 0.035**2 + 0.086**2 ),
117 math.sqrt( 0.127**2 + 0.154**2 )
118 )
119 )
120 os.system("cp %s ."%jetResFile)
121 return self.empty + self.process.tupleJet