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

# User Rev Content
1 bbetchar 1.14 import math,os
2 bbetchar 1.1 from FWCore.ParameterSet import Config as cms
3    
4 bbetchar 1.10 def tags(stuff) :
5     return ( cms.InputTag(stuff) if type(stuff)!=list else
6     cms.VInputTag([tags(item) for item in stuff]) )
7    
8 bbetchar 1.1 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 bbetchar 1.6 def path(self) :
16     return cms.Path( self.events() *
17 bbetchar 1.16 self.exists() *
18 bbetchar 1.6 self.gen() *
19 bbetchar 1.10 self.triggers() *
20 bbetchar 1.6 self.electron() *
21     self.muon() *
22 bbetchar 1.10 self.met() *
23 bbetchar 1.11 self.jet() *
24 bbetchar 1.6 self.tree() )
25    
26 bbetchar 1.1 def attr(self, item) : return getattr(self.process, item)
27    
28     def tree(self) :
29 bbetchar 1.6 self.process.topRef = cms.EDAnalyzer( "TreeMaker", outputCommands = cms.untracked.vstring(
30 bbetchar 1.1 'drop *',
31 bbetchar 1.17 'keep *_tuple*_*_*',
32     'keep double_kt6PFJets_rho_RECO') )
33 bbetchar 1.19 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 bbetchar 1.2 return self.process.topRef
36 bbetchar 1.1
37     def events(self) :
38 bbetchar 1.14 self.process.tupleEvents = cms.EDProducer("Tuple_Event",
39     vertexTag = tags("goodOfflinePrimaryVertices"))
40 bbetchar 1.1 return self.empty + self.process.tupleEvents
41    
42 bbetchar 1.16 def exists(self) :
43     self.process.tupleExists = cms.EDProducer("Tuple_ProductExists",
44     products = tags(["mvaTrigV0"]))
45     return self.empty + self.process.tupleExists
46    
47 bbetchar 1.2 def gen(self) :
48     if self.options.isData : return self.empty
49     self.process.tupleGen = cms.EDProducer("Tuple_GenParticle",
50 bbetchar 1.10 InputTag = tags('genParticles'),
51 bbetchar 1.13 JetCollections = tags([]),
52 bbetchar 1.2 Prefix = cms.string('gen'),
53     Suffix = cms.string(''),
54 bbetchar 1.8 GenStatus1PtCut = cms.double(1000.0),
55 bbetchar 1.2 GenJetPtCut = cms.double(10.0),
56 bbetchar 1.14 OnlyStatus3 = cms.bool(True)
57 bbetchar 1.2 )
58 bbetchar 1.4 self.process.tuplePileup = cms.EDProducer("Tuple_PileupSummary",
59 bbetchar 1.10 InputTag = tags('addPileupInfo'),
60 bbetchar 1.4 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 bbetchar 1.9 self.process.tupleTriggers = cms.EDProducer("Tuple_Triggers",
67 bbetchar 1.10 InputTag = tags('TriggerResults'),
68     TriggerEventInputTag = tags('hltTriggerSummaryAOD'),
69 bbetchar 1.9 )
70     return self.empty + self.process.tupleTriggers
71 bbetchar 1.2
72 bbetchar 1.3 def electron(self) :
73     self.process.tupleElectron = cms.EDProducer("Tuple_Electron",
74 bbetchar 1.10 electronTag = tags('selectedPatElectrons'+self.options.postfix),
75     vertexTag = tags('goodOfflinePrimaryVertices'),
76 bbetchar 1.3 prefix = cms.string('el'),
77     electronIDs = cms.vstring('mvaTrigV0')
78     )
79     return self.empty + self.process.tupleElectron
80    
81 bbetchar 1.5
82     def muon(self) :
83     self.process.tupleMuon = cms.EDProducer("Tuple_Muon",
84 bbetchar 1.10 muonTag = tags('selectedPatMuons'+self.options.postfix),
85     vertexTag = tags('goodOfflinePrimaryVertices'),
86 bbetchar 1.5 prefix = cms.string('mu') )
87     return self.empty + self.process.tupleMuon
88    
89 bbetchar 1.10 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 bbetchar 1.11
98     def jet(self) :
99 bbetchar 1.14 jetResFile = '%s/src/CondFormats/JetMETObjects/data/Spring10_PtResolution_AK5PF.txt'%os.environ['CMSSW_RELEASE_BASE']
100 bbetchar 1.11 self.process.tupleJet = cms.EDProducer("Tuple_PatJet",
101     prefix = cms.string("jet"),
102 bbetchar 1.18 jetsTag = tags("selectedPatJetsForAnalysis"),
103     allJetsTag = tags("selectedPatJets"+self.options.postfix),
104 bbetchar 1.11 jecRecord = cms.string("AK5PFchs"),
105     bTags = cms.vstring(self.options.btags),
106     pfInfo = cms.bool(True),
107 bbetchar 1.13 genInfo = cms.bool( not self.options.isData),
108 bbetchar 1.15 jetResolutionFile = cms.string(jetResFile.split('/')[-1]),
109 bbetchar 1.13
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 bbetchar 1.11 )
120 bbetchar 1.14 os.system("cp %s ."%jetResFile)
121 bbetchar 1.11 return self.empty + self.process.tupleJet