CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
mitigatedMETSequence_cff.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 
4 
5 
6 ##================================================
7 ## MVA MET sequence
8 ##================================================
11 from RecoJets.JetProducers.PileupJetIDParams_cfi import JetIdParams
12 
13 from RecoJets.JetProducers.kt4PFJets_cfi import kt4PFJets
14 kt6PFJets = kt4PFJets.clone(rParam = cms.double(0.6), doRhoFastjet = True )
15 
16 calibratedAK4PFJetsForPFMVAMEt = cms.EDProducer('PFJetCorrectionProducer',
17  src = cms.InputTag('ak4PFJets'),
18  correctors = cms.vstring("ak4PFL1FastL2L3") # NOTE: use "ak5PFL1FastL2L3" for MC / "ak5PFL1FastL2L3Residual" for Data
19 )
20 
21 pfMVAMEt = cms.EDProducer("PFMETProducerMVA",
22  srcCorrJets = cms.InputTag('calibratedAK4PFJetsForPFMVAMEt'),
23  srcUncorrJets = cms.InputTag('ak4PFJets'),
24  srcPFCandidates = cms.InputTag('particleFlow'),
25  srcVertices = cms.InputTag('offlinePrimaryVertices'),
26  srcLeptons = cms.VInputTag('selectedElectrons',
27  'selectedMuons',
28  'selectedTaus',
29  'selectedPhotons',
30  'selectedJets'),
31  minNumLeptons = cms.int32(0),
32  srcRho = cms.InputTag('fixedGridRhoFastjetAll'),
33  globalThreshold = cms.double(-1.),
34  minCorrJetPt = cms.double(-1.),
35  inputFileNames = cms.PSet(
36  U = cms.FileInPath('RecoMET/METPUSubtraction/data/gbrmet_53_June2013_type1.root'),
37  DPhi = cms.FileInPath('RecoMET/METPUSubtraction/data/gbrmetphi_53_June2013_type1.root'),
38  CovU1 = cms.FileInPath('RecoMET/METPUSubtraction/data/gbru1cov_53_Dec2012.root'),
39  CovU2 = cms.FileInPath('RecoMET/METPUSubtraction/data/gbru2cov_53_Dec2012.root')
40  ),
41  loadMVAfromDB = cms.bool(False),
42  is42 = cms.bool(False), # CV: set this flag to true if you are running mvaPFMET in CMSSW_4_2_x
43  corrector = cms.string("ak4PFL1Fastjet"),
44  useType1 = cms.bool(True),
45  useOld42 = cms.bool(False),
46  dZcut = cms.double(0.1),
47  impactParTkThreshold = cms.double(0.),
48  tmvaWeights = cms.string("RecoJets/JetProducers/data/TMVAClassificationCategory_JetID_MET_53X_Dec2012.weights.xml.gz"),
49  tmvaMethod = cms.string("JetID"),
50  version = cms.int32(-1),
51  cutBased = cms.bool(False),
52  tmvaVariables = cms.vstring(
53  "nvtx",
54  "jetPt",
55  "jetEta",
56  "jetPhi",
57  "dZ",
58  "beta",
59  "betaStar",
60  "nCharged",
61  "nNeutrals",
62  "dR2Mean",
63  "ptD",
64  "frac01",
65  "frac02",
66  "frac03",
67  "frac04",
68  "frac05"
69  ),
70  tmvaSpectators = cms.vstring(),
71  JetIdParams = JetIdParams,
72  verbosity = cms.int32(0)
73 )
74 
75 pfMVAMEtSequence = cms.Sequence(
76  kt6PFJets*
77  calibratedAK4PFJetsForPFMVAMEt*
78  pfMVAMEt
79 )
80 
81 
82 ##================================================
83 ## Pf No Pileup MET sequence
84 ##================================================
85 pfNoPUMEtSequence = cms.Sequence()
86 
88 calibratedAK4PFJetsForPFNoPUMEt = cms.EDProducer('PFJetCorrectionProducer',
89  src = cms.InputTag('ak4PFJets'),
90  correctors = cms.vstring('ak4PFL1FastL2L3Residual') # NOTE: use "ak4PFL1FastL2L3" for MC / "ak4PFL1FastL2L3Residual" for Data
91 )
92 ak4PFJetSequenceForPFNoPUMEt = cms.Sequence(calibratedAK4PFJetsForPFNoPUMEt)
93 pfNoPUMEtSequence += ak4PFJetSequenceForPFNoPUMEt
94 
96 puJetIdForPFNoPUMEt = pileupJetId.clone(
97  algos = cms.VPSet(
98  full_53x,
99  cutbased,
100  PhilV1
101  ),
102 # label = cms.string("fullId"), #MM does not work for weird reasons, cannot be cloned properly
103  produceJetIds = cms.bool(True),
104  runMvas = cms.bool(True),
105  jets = cms.InputTag("calibratedAK4PFJetsForPFNoPUMEt"),
106  applyJec = cms.bool(False),
107  inputIsCorrected = cms.bool(True),
108  )
109 pfNoPUMEtSequence += puJetIdForPFNoPUMEt
110 
112 pfNoPUMEtSequence += type0PFMEtCorrection
113 pfCandidateToVertexAssociationForPFNoPUMEt = pfCandidateToVertexAssociation.clone(
114  MaxNumberOfAssociations = cms.int32(1),
115  doReassociation = cms.bool(False),
116  FinalAssociation = cms.untracked.int32(1),
117  nTrackWeight = cms.double(0.)
118 )
119 pfNoPUMEtSequence += pfCandidateToVertexAssociationForPFNoPUMEt
120 pfMETcorrType0ForPFNoPUMEt = pfMETcorrType0.clone(
121  srcPFCandidateToVertexAssociations = cms.InputTag('pfCandidateToVertexAssociationForPFNoPUMEt')
122 )
123 pfNoPUMEtSequence += pfMETcorrType0ForPFNoPUMEt
124 
125 jvfJetIdForPFNoPUMEt = cms.EDProducer("JVFJetIdProducer",
126  srcJets = cms.InputTag('calibratedAK4PFJetsForPFNoPUMEt'),
127  srcPFCandidates = cms.InputTag('particleFlow'),
128  srcPFCandToVertexAssociations = cms.InputTag('pfCandidateToVertexAssociationForPFNoPUMEt'),
129  srcHardScatterVertex = cms.InputTag('selectedPrimaryVertexHighestPtTrackSumForPFMEtCorrType0'),
130  minTrackPt = cms.double(1.),
131  dZcut = cms.double(0.2), # cm
132  JVFcut = cms.double(0.75),
133  neutralJetOption = cms.string("noPU")
134 )
135 pfNoPUMEtSequence += jvfJetIdForPFNoPUMEt
136 
137 import RecoMET.METProducers.METSigParams_cfi as met_config
138 pfNoPUMEtData = cms.EDProducer("NoPileUpPFMEtDataProducer",
139  srcJets = cms.InputTag('calibratedAK4PFJetsForPFNoPUMEt'),
140  srcJetIds = cms.InputTag('puJetIdForPFNoPUMEt', 'full53xId'),
141 
142  minJetPt = cms.double(30.0),
143  jetIdSelection = cms.string('loose'),
144  jetEnOffsetCorrLabel = cms.string("ak4PFL1Fastjet"),
145  srcPFCandidates = cms.InputTag('particleFlow'),
146  srcPFCandToVertexAssociations = cms.InputTag('pfCandidateToVertexAssociationForPFNoPUMEt'),
147  srcJetsForMEtCov = cms.InputTag('ak4PFJets'),
148  minJetPtForMEtCov = cms.double(10.),
149  srcHardScatterVertex = cms.InputTag('selectedPrimaryVertexHighestPtTrackSumForPFMEtCorrType0'),
150  dZcut = cms.double(0.2), # cm
151  resolution = met_config.METSignificance_params,
152  verbosity = cms.int32(0)
153 )
154 pfNoPUMEtSequence += pfNoPUMEtData
155 
156 pfNoPUMEt = cms.EDProducer("NoPileUpPFMEtProducer",
157  srcMEt = cms.InputTag('pfMet'),
158  srcMEtCov = cms.InputTag(''), # NOTE: leave empty to take MET covariance matrix from reco::PFMET object //MM 08/29/14, bypass hardcoded as this variable has never been used so far
159  srcMVAMEtData = cms.InputTag('pfNoPUMEtData'),
160  srcLeptons = cms.VInputTag( 'selectedElectrons',
161  'selectedMuons',
162  'selectedTaus',
163  'selectedPhotons',
164  'selectedJets'),
165 # NOTE: you need to set this to collections of electrons, muons and tau-jets
166 #passing the lepton reconstruction & identification criteria applied in your analysis
167  srcMVAMEtDataLeptonMatch = cms.InputTag('pfNoPUMEtData'),
168  srcType0Correction = cms.InputTag('pfMETcorrType0ForPFNoPUMEt'),
169  sfNoPUjets = cms.double(1.0),
170  sfNoPUjetOffsetEnCorr = cms.double(0.0),
171  sfPUjets = cms.double(1.0),
172  sfNoPUunclChargedCands = cms.double(1.0),
173  sfPUunclChargedCands = cms.double(1.0),
174  sfUnclNeutralCands = cms.double(0.6),
175  sfType0Correction = cms.double(1.0),
176  sfLeptonIsoCones = cms.double(0.6),
177  resolution = met_config.METSignificance_params,
178  sfMEtCovMin = cms.double(0.6),
179  sfMEtCovMax = cms.double(1.0),
180  saveInputs = cms.bool(True),
181  verbosity = cms.int32(0)
182 )
183 pfNoPUMEtSequence += pfNoPUMEt
184 
185 
186 mitigatedMETSequence = cms.Sequence(
187 selectionSequenceForMVANoPUMET+
188 pfMVAMEtSequence+
189 pfNoPUMEtSequence
190 )