CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
met_cff.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
4 
5 
6 ##################### Tables for final output and docs ##########################
7 metTable = cms.EDProducer("SimpleCandidateFlatTableProducer",
8  src = cms.InputTag("slimmedMETs"),
9  name = cms.string("MET"),
10  doc = cms.string("slimmedMET, type-1 corrected PF MET"),
11  singleton = cms.bool(True), # there's always exactly one MET per event
12  extension = cms.bool(False), # this is the main table for the MET
13  variables = cms.PSet(PTVars,
14  sumEt = Var("sumEt()", float, doc="scalar sum of Et",precision=10),
15  covXX = Var("getSignificanceMatrix().At(0,0)",float,doc="xx element of met covariance matrix", precision=8),
16  covXY = Var("getSignificanceMatrix().At(0,1)",float,doc="xy element of met covariance matrix", precision=8),
17  covYY = Var("getSignificanceMatrix().At(1,1)",float,doc="yy element of met covariance matrix", precision=8),
18  significance = Var("metSignificance()", float, doc="MET significance",precision=10),
19  sumPtUnclustered = Var("metSumPtUnclustered()", float, doc="sumPt used for MET significance",precision=10),
20  MetUnclustEnUpDeltaX = Var("shiftedPx('UnclusteredEnUp')-px()", float, doc="Delta (METx_mod-METx) Unclustered Energy Up",precision=10),
21  MetUnclustEnUpDeltaY = Var("shiftedPy('UnclusteredEnUp')-py()", float, doc="Delta (METy_mod-METy) Unclustered Energy Up",precision=10),
22 
23  ),
24 )
25 
26 
27 rawMetTable = cms.EDProducer("SimpleCandidateFlatTableProducer",
28  src = metTable.src,
29  name = cms.string("RawMET"),
30  doc = cms.string("raw PF MET"),
31  singleton = cms.bool(True), # there's always exactly one MET per event
32  extension = cms.bool(False), # this is the main table for the MET
33  variables = cms.PSet(#NOTA BENE: we don't copy PTVars here!
34  pt = Var("uncorPt", float, doc="pt", precision=10),
35  phi = Var("uncorPhi", float, doc="phi", precision=10),
36  sumEt = Var("uncorSumEt", float, doc="scalar sum of Et", precision=10),
37  ),
38 )
39 
40 
41 caloMetTable = cms.EDProducer("SimpleCandidateFlatTableProducer",
42  src = metTable.src,
43  name = cms.string("CaloMET"),
44  doc = cms.string("Offline CaloMET (muon corrected)"),
45  singleton = cms.bool(True), # there's always exactly one MET per event
46  extension = cms.bool(False), # this is the main table for the MET
47  variables = cms.PSet(#NOTA BENE: we don't copy PTVars here!
48  pt = Var("caloMETPt", float, doc="pt", precision=10),
49  phi = Var("caloMETPhi", float, doc="phi", precision=10),
50  sumEt = Var("caloMETSumEt", float, doc="scalar sum of Et", precision=10),
51  ),
52 )
53 
54 puppiMetTable = cms.EDProducer("SimpleCandidateFlatTableProducer",
55  src = cms.InputTag("slimmedMETsPuppi"),
56  name = cms.string("PuppiMET"),
57  doc = cms.string("PUPPI MET"),
58  singleton = cms.bool(True), # there's always exactly one MET per event
59  extension = cms.bool(False), # this is the main table for the MET
60  variables = cms.PSet(PTVars,
61  sumEt = Var("sumEt()", float, doc="scalar sum of Et",precision=10),
62  ptJERUp = Var("shiftedPt('JetResUp')", float, doc="JER up pt",precision=10),
63  ptJERDown = Var("shiftedPt('JetResDown')", float, doc="JER down pt",precision=10),
64  phiJERUp = Var("shiftedPhi('JetResUp')", float, doc="JER up phi",precision=10),
65  phiJERDown = Var("shiftedPhi('JetResDown')", float, doc="JER down phi",precision=10),
66  ptJESUp = Var("shiftedPt('JetEnUp')", float, doc="JES up pt",precision=10),
67  ptJESDown = Var("shiftedPt('JetEnDown')", float, doc="JES down pt",precision=10),
68  phiJESUp = Var("shiftedPhi('JetEnUp')", float, doc="JES up phi",precision=10),
69  phiJESDown = Var("shiftedPhi('JetEnDown')", float, doc="JES down phi",precision=10),
70  ptUnclusteredUp = Var("shiftedPt('UnclusteredEnUp')", float, doc="Unclustered up pt",precision=10),
71  ptUnclusteredDown = Var("shiftedPt('UnclusteredEnDown')", float, doc="Unclustered down pt",precision=10),
72  phiUnclusteredUp = Var("shiftedPhi('UnclusteredEnUp')", float, doc="Unclustered up phi",precision=10),
73  phiUnclusteredDown = Var("shiftedPhi('UnclusteredEnDown')", float, doc="Unclustered down phi",precision=10),
74  ),
75 )
76 
77 rawPuppiMetTable = cms.EDProducer("SimpleCandidateFlatTableProducer",
78  src = puppiMetTable.src,
79  name = cms.string("RawPuppiMET"),
80  doc = cms.string("raw Puppi MET"),
81  singleton = cms.bool(True), # there's always exactly one MET per event
82  extension = cms.bool(False), # this is the main table for the MET
83  variables = cms.PSet(#NOTA BENE: we don't copy PTVars here!
84  pt = Var("uncorPt", float, doc="pt", precision=10),
85  phi = Var("uncorPhi", float, doc="phi", precision=10),
86  sumEt = Var("uncorSumEt", float, doc="scalar sum of Et", precision=10),
87  ),)
88 
89 
90 tkMetTable = cms.EDProducer("SimpleCandidateFlatTableProducer",
91  src = metTable.src,
92  name = cms.string("TkMET"),
93  doc = cms.string("Track MET computed with tracks from PV0 ( pvAssociationQuality()>=4 ) "),
94  singleton = cms.bool(True), # there's always exactly one MET per event
95  extension = cms.bool(False), # this is the main table for the TkMET
96  variables = cms.PSet(#NOTA BENE: we don't copy PTVars here!
97  pt = Var("corPt('RawTrk')", float, doc="raw track MET pt",precision=10),
98  phi = Var("corPhi('RawTrk')", float, doc="raw track MET phi",precision=10),
99  sumEt = Var("corSumEt('RawTrk')", float, doc="raw track scalar sum of Et",precision=10),
100  ),
101 )
102 
103 chsMetTable = cms.EDProducer("SimpleCandidateFlatTableProducer",
104  src = metTable.src,
105  name = cms.string("ChsMET"),
106  doc = cms.string("PF MET computed with CHS PF candidates"),
107  singleton = cms.bool(True), # there's always exactly one MET per event
108  extension = cms.bool(False), # this is the main table for the TkMET
109  variables = cms.PSet(#NOTA BENE: we don't copy PTVars here!
110  pt = Var("corPt('RawChs')", float, doc="raw chs PF MET pt",precision=10),
111  phi = Var("corPhi('RawChs')", float, doc="raw chs PF MET phi",precision=10),
112  sumEt = Var("corSumEt('RawChs')", float, doc="raw chs PF scalar sum of Et",precision=10),
113  ),
114 )
115 
116 deepMetResolutionTuneTable = cms.EDProducer("SimpleCandidateFlatTableProducer",
117  # current deepMets are saved in slimmedMETs in MiniAOD,
118  # in the same way as chsMet/TkMET
119  src = metTable.src,
120  name = cms.string("DeepMETResolutionTune"),
121  doc = cms.string("Deep MET trained with resolution tune"),
122  singleton = cms.bool(True), # there's always exactly one MET per event
123  extension = cms.bool(False), # this is the main table for the MET
124  variables = cms.PSet(#NOTA BENE: we don't copy PTVars here!
125  pt = Var("corPt('RawDeepResolutionTune')", float, doc="DeepMET ResolutionTune pt",precision=-1),
126  phi = Var("corPhi('RawDeepResolutionTune')", float, doc="DeepmET ResolutionTune phi",precision=12),
127  ),
128 )
129 
130 deepMetResponseTuneTable = cms.EDProducer("SimpleCandidateFlatTableProducer",
131  src = metTable.src,
132  name = cms.string("DeepMETResponseTune"),
133  doc = cms.string("Deep MET trained with extra response tune"),
134  singleton = cms.bool(True), # there's always exactly one MET per event
135  extension = cms.bool(False), # this is the main table for the MET
136  variables = cms.PSet(#NOTA BENE: we don't copy PTVars here!
137  pt = Var("corPt('RawDeepResponseTune')", float, doc="DeepMET ResponseTune pt",precision=-1),
138  phi = Var("corPhi('RawDeepResponseTune')", float, doc="DeepMET ResponseTune phi",precision=12),
139  ),
140 )
141 
142 metFixEE2017Table = metTable.clone()
143 metFixEE2017Table.src = cms.InputTag("slimmedMETsFixEE2017")
144 metFixEE2017Table.name = cms.string("METFixEE2017")
145 metFixEE2017Table.doc = cms.string("Type-1 corrected PF MET, with fixEE2017 definition")
146 
147 
148 metMCTable = cms.EDProducer("SimpleCandidateFlatTableProducer",
149  src = metTable.src,
150  name = cms.string("GenMET"),
151  doc = cms.string("Gen MET"),
152  singleton = cms.bool(True),
153  extension = cms.bool(False),
154  variables = cms.PSet(
155  pt = Var("genMET.pt", float, doc="pt", precision=10),
156  phi = Var("genMET.phi", float, doc="phi", precision=10),
157  ),
158 )
159 
160 
161 metTablesTask = cms.Task( metTable, rawMetTable, caloMetTable, puppiMetTable, rawPuppiMetTable, tkMetTable, chsMetTable, deepMetResolutionTuneTable, deepMetResponseTuneTable )
162 _withFixEE2017_task = cms.Task(metTablesTask.copy(), metFixEE2017Table)
163 for modifier in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2:
164  modifier.toReplaceWith(metTablesTask,_withFixEE2017_task) # only in old miniAOD, the new ones will come from the UL rereco
165 metMCTask = cms.Task( metMCTable )