Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:24:06

0001 import FWCore.ParameterSet.Config as cms
0002 
0003 # load modules for producing Type 1 / Type 1 + 2 corrections for reco::PFMET objects
0004 from JetMETCorrections.Type1MET.correctionTermsPfMetType1Type2_cff import *
0005 
0006 #from PhysicsTools.PatAlgos.producerLayer1.jetProducer_cfi import patJets
0007 
0008 
0009 #--------------------------------------------------------------------------------
0010 # produce "raw" (uncorrected) pat::MET of PF-type
0011 from PhysicsTools.PatAlgos.producersLayer1.metProducer_cfi import patMETs
0012 patPFMet = patMETs.clone(
0013     metSource = 'pfMet'
0014 )
0015 #--------------------------------------------------------------------------------
0016 
0017 #--------------------------------------------------------------------------------
0018 # select collection of pat::Jets entering Type 1 + 2 MET corrections
0019 #
0020 
0021 selectedPatJetsForMetT1T2Corr = cms.EDFilter("PATJetSelector",
0022     src = cms.InputTag('patJets'),
0023     cut = cms.string('abs(eta) < 9.9'),
0024     filter = cms.bool(False)
0025 )
0026 
0027 selectedPatJetsForMetT2Corr = cms.EDFilter("PATJetSelector",
0028     src = cms.InputTag('patJets'),
0029     cut = cms.string('abs(eta) > 9.9'),
0030     filter = cms.bool(False)
0031 )
0032 #--------------------------------------------------------------------------------
0033 
0034 #--------------------------------------------------------------------------------
0035 # produce Type 1 + 2 MET corrections for pat::Jets of PF-type
0036 import PhysicsTools.PatUtils.pfJetMETcorrInputProducerTPatJetPATJetCorrExtractor_cfi as _mod
0037 
0038 patPFMetT1T2Corr = _mod.pfJetMETcorrInputProducerTPatJetPATJetCorrExtractor.clone(
0039     src             = 'selectedPatJetsForMetT1T2Corr',
0040     offsetCorrLabel = "L1FastJet",
0041     jetCorrLabel    = "L3Absolute",  # for MC
0042     jetCorrLabelRes = "L2L3Residual" # for Data automatic switch
0043 )
0044 patPFMetT1T2CorrTask = cms.Task(selectedPatJetsForMetT1T2Corr,
0045                                 patPFMetT1T2Corr)
0046 
0047 patPFMetT2Corr = patPFMetT1T2Corr.clone(
0048     src = 'selectedPatJetsForMetT2Corr'
0049 )
0050 patPFMetT2CorrTask = cms.Task(patPFMetT2Corr)
0051 
0052 #--------------------------------------------------------------------------------
0053 
0054 #--------------------------------------------------------------------------------
0055 # produce Type 0 MET corrections
0056 from JetMETCorrections.Type1MET.pfMETCorrectionType0_cfi import *
0057 
0058 patPFMetT0Corr = pfMETcorrType0.clone()
0059 patPFMetT0CorrTask = cms.Task(type0PFMEtCorrectionPFCandToVertexAssociationTask, patPFMetT0Corr)
0060 #--------------------------------------------------------------------------------
0061 
0062 #--------------------------------------------------------------------------------
0063 # produce Type xy MET corrections
0064 import JetMETCorrections.Type1MET.pfMETmultShiftCorrections_cfi as _shiftMod
0065 #dummy module
0066 
0067 patPFMetTxyCorr = _shiftMod.pfMEtMultShiftCorr.clone()
0068 
0069 patMultPhiCorrParams_Txy_50ns         = cms.VPSet( [pset for pset in _shiftMod.multPhiCorrParams_Txy_50ns])
0070 patMultPhiCorrParams_T0pcTxy_50ns     = cms.VPSet( [pset for pset in _shiftMod.multPhiCorrParams_T0pcTxy_50ns])
0071 patMultPhiCorrParams_T0pcT1Txy_50ns   = cms.VPSet( [pset for pset in _shiftMod.multPhiCorrParams_T0pcT1Txy_50ns])
0072 patMultPhiCorrParams_T0pcT1T2Txy_50ns = cms.VPSet( [pset for pset in _shiftMod.multPhiCorrParams_T0pcT1T2Txy_50ns])
0073 patMultPhiCorrParams_T1Txy_50ns       = cms.VPSet( [pset for pset in _shiftMod.multPhiCorrParams_T1Txy_50ns])
0074 patMultPhiCorrParams_T1T2Txy_50ns     = cms.VPSet( [pset for pset in _shiftMod.multPhiCorrParams_T1T2Txy_50ns])
0075 patMultPhiCorrParams_T1SmearTxy_50ns  = cms.VPSet( [pset for pset in _shiftMod.multPhiCorrParams_T1Txy_50ns])
0076 patMultPhiCorrParams_T1T2SmearTxy_50ns = cms.VPSet( [pset for pset in _shiftMod.multPhiCorrParams_T1T2Txy_50ns])
0077 patMultPhiCorrParams_T0pcT1SmearTxy_50ns = cms.VPSet( [pset for pset in _shiftMod.multPhiCorrParams_T0pcT1Txy_50ns])
0078 patMultPhiCorrParams_T0pcT1T2SmearTxy_50ns = cms.VPSet( [pset for pset in _shiftMod.multPhiCorrParams_T0pcT1T2Txy_50ns])
0079 
0080 patMultPhiCorrParams_Txy_25ns         = cms.VPSet( [pset for pset in _shiftMod.multPhiCorrParams_Txy_25ns])
0081 patMultPhiCorrParams_T0pcTxy_25ns     = cms.VPSet( [pset for pset in _shiftMod.multPhiCorrParams_T0pcTxy_25ns])
0082 patMultPhiCorrParams_T0pcT1Txy_25ns   = cms.VPSet( [pset for pset in _shiftMod.multPhiCorrParams_T0pcT1Txy_25ns])
0083 patMultPhiCorrParams_T0pcT1T2Txy_25ns = cms.VPSet( [pset for pset in _shiftMod.multPhiCorrParams_T0pcT1T2Txy_25ns])
0084 patMultPhiCorrParams_T1Txy_25ns       = cms.VPSet( [pset for pset in _shiftMod.multPhiCorrParams_T1Txy_25ns])
0085 patMultPhiCorrParams_T1T2Txy_25ns     = cms.VPSet( [pset for pset in _shiftMod.multPhiCorrParams_T1T2Txy_25ns])
0086 patMultPhiCorrParams_T1SmearTxy_25ns  = cms.VPSet( [pset for pset in _shiftMod.multPhiCorrParams_T1Txy_25ns])
0087 patMultPhiCorrParams_T1T2SmearTxy_25ns = cms.VPSet( [pset for pset in _shiftMod.multPhiCorrParams_T1T2Txy_25ns])
0088 patMultPhiCorrParams_T0pcT1SmearTxy_25ns = cms.VPSet( [pset for pset in _shiftMod.multPhiCorrParams_T0pcT1Txy_25ns])
0089 patMultPhiCorrParams_T0pcT1T2SmearTxy_25ns = cms.VPSet( [pset for pset in _shiftMod.multPhiCorrParams_T0pcT1T2Txy_25ns])
0090 
0091 # Run2 UL MC XY(Type1 PFMET Phi) corrections
0092 import JetMETCorrections.Type1MET.multPhiCorr_Run2_ULMC_cfi as multPhiCorrParams_Run2_ULMC
0093 import JetMETCorrections.Type1MET.multPhiCorr_Run2_ULDATA_cfi as multPhiCorrParams_Run2_ULDATA
0094 import JetMETCorrections.Type1MET.multPhiCorr_Puppi_Run2_ULMC_cfi as multPhiCorrParams_Puppi_Run2_ULMC
0095 import JetMETCorrections.Type1MET.multPhiCorr_Puppi_Run2_ULDATA_cfi as multPhiCorrParams_Puppi_Run2_ULDATA
0096 
0097 # PFMET XY corrections
0098 patMultPhiCorrParams_ULMC2018 = multPhiCorrParams_Run2_ULMC.multPhiCorr_ULMC2018
0099 patMultPhiCorrParams_ULMC2017 = multPhiCorrParams_Run2_ULMC.multPhiCorr_ULMC2017
0100 patMultPhiCorrParams_ULMC2016preVFP = multPhiCorrParams_Run2_ULMC.multPhiCorr_ULMC2016preVFP
0101 patMultPhiCorrParams_ULMC2016postVFP = multPhiCorrParams_Run2_ULMC.multPhiCorr_ULMC2016postVFP
0102 
0103 patMultPhiCorrParams_ULDATA2018A = multPhiCorrParams_Run2_ULDATA.multPhiCorr_ULDATA2018A
0104 patMultPhiCorrParams_ULDATA2018B = multPhiCorrParams_Run2_ULDATA.multPhiCorr_ULDATA2018B
0105 patMultPhiCorrParams_ULDATA2018C = multPhiCorrParams_Run2_ULDATA.multPhiCorr_ULDATA2018C
0106 patMultPhiCorrParams_ULDATA2018D = multPhiCorrParams_Run2_ULDATA.multPhiCorr_ULDATA2018D
0107 
0108 patMultPhiCorrParams_ULDATA2017B = multPhiCorrParams_Run2_ULDATA.multPhiCorr_ULDATA2017B
0109 patMultPhiCorrParams_ULDATA2017C = multPhiCorrParams_Run2_ULDATA.multPhiCorr_ULDATA2017C
0110 patMultPhiCorrParams_ULDATA2017D = multPhiCorrParams_Run2_ULDATA.multPhiCorr_ULDATA2017D
0111 patMultPhiCorrParams_ULDATA2017E = multPhiCorrParams_Run2_ULDATA.multPhiCorr_ULDATA2017E
0112 patMultPhiCorrParams_ULDATA2017F = multPhiCorrParams_Run2_ULDATA.multPhiCorr_ULDATA2017F
0113 
0114 patMultPhiCorrParams_ULDATA2016preVFPB = multPhiCorrParams_Run2_ULDATA.multPhiCorr_ULDATA2016preVFPB
0115 patMultPhiCorrParams_ULDATA2016preVFPC = multPhiCorrParams_Run2_ULDATA.multPhiCorr_ULDATA2016preVFPC
0116 patMultPhiCorrParams_ULDATA2016preVFPD = multPhiCorrParams_Run2_ULDATA.multPhiCorr_ULDATA2016preVFPD
0117 patMultPhiCorrParams_ULDATA2016preVFPE = multPhiCorrParams_Run2_ULDATA.multPhiCorr_ULDATA2016preVFPE
0118 patMultPhiCorrParams_ULDATA2016preVFPF = multPhiCorrParams_Run2_ULDATA.multPhiCorr_ULDATA2016preVFPF
0119 
0120 patMultPhiCorrParams_ULDATA2016postVFPF = multPhiCorrParams_Run2_ULDATA.multPhiCorr_ULDATA2016postVFPF
0121 patMultPhiCorrParams_ULDATA2016postVFPG = multPhiCorrParams_Run2_ULDATA.multPhiCorr_ULDATA2016postVFPG
0122 patMultPhiCorrParams_ULDATA2016postVFPH = multPhiCorrParams_Run2_ULDATA.multPhiCorr_ULDATA2016postVFPH
0123 
0124 # PuppiMET XY corrections
0125 patMultPhiCorrParams_Puppi_ULMC2018 = multPhiCorrParams_Puppi_Run2_ULMC.multPhiCorr_Puppi_ULMC2018
0126 patMultPhiCorrParams_Puppi_ULMC2017 = multPhiCorrParams_Puppi_Run2_ULMC.multPhiCorr_Puppi_ULMC2017
0127 patMultPhiCorrParams_Puppi_ULMC2016preVFP = multPhiCorrParams_Puppi_Run2_ULMC.multPhiCorr_Puppi_ULMC2016preVFP
0128 patMultPhiCorrParams_Puppi_ULMC2016postVFP = multPhiCorrParams_Puppi_Run2_ULMC.multPhiCorr_Puppi_ULMC2016postVFP
0129 
0130 patMultPhiCorrParams_Puppi_ULDATA2018A = multPhiCorrParams_Puppi_Run2_ULDATA.multPhiCorr_Puppi_ULDATA2018A
0131 patMultPhiCorrParams_Puppi_ULDATA2018B = multPhiCorrParams_Puppi_Run2_ULDATA.multPhiCorr_Puppi_ULDATA2018B
0132 patMultPhiCorrParams_Puppi_ULDATA2018C = multPhiCorrParams_Puppi_Run2_ULDATA.multPhiCorr_Puppi_ULDATA2018C
0133 patMultPhiCorrParams_Puppi_ULDATA2018D = multPhiCorrParams_Puppi_Run2_ULDATA.multPhiCorr_Puppi_ULDATA2018D
0134 
0135 patMultPhiCorrParams_Puppi_ULDATA2017B = multPhiCorrParams_Puppi_Run2_ULDATA.multPhiCorr_Puppi_ULDATA2017B
0136 patMultPhiCorrParams_Puppi_ULDATA2017C = multPhiCorrParams_Puppi_Run2_ULDATA.multPhiCorr_Puppi_ULDATA2017C
0137 patMultPhiCorrParams_Puppi_ULDATA2017D = multPhiCorrParams_Puppi_Run2_ULDATA.multPhiCorr_Puppi_ULDATA2017D
0138 patMultPhiCorrParams_Puppi_ULDATA2017E = multPhiCorrParams_Puppi_Run2_ULDATA.multPhiCorr_Puppi_ULDATA2017E
0139 patMultPhiCorrParams_Puppi_ULDATA2017F = multPhiCorrParams_Puppi_Run2_ULDATA.multPhiCorr_Puppi_ULDATA2017F
0140 
0141 patMultPhiCorrParams_Puppi_ULDATA2016preVFPB = multPhiCorrParams_Puppi_Run2_ULDATA.multPhiCorr_Puppi_ULDATA2016preVFPB
0142 patMultPhiCorrParams_Puppi_ULDATA2016preVFPC = multPhiCorrParams_Puppi_Run2_ULDATA.multPhiCorr_Puppi_ULDATA2016preVFPC
0143 patMultPhiCorrParams_Puppi_ULDATA2016preVFPD = multPhiCorrParams_Puppi_Run2_ULDATA.multPhiCorr_Puppi_ULDATA2016preVFPD
0144 patMultPhiCorrParams_Puppi_ULDATA2016preVFPE = multPhiCorrParams_Puppi_Run2_ULDATA.multPhiCorr_Puppi_ULDATA2016preVFPE
0145 patMultPhiCorrParams_Puppi_ULDATA2016preVFPF = multPhiCorrParams_Puppi_Run2_ULDATA.multPhiCorr_Puppi_ULDATA2016preVFPF
0146 
0147 patMultPhiCorrParams_Puppi_ULDATA2016postVFPF = multPhiCorrParams_Puppi_Run2_ULDATA.multPhiCorr_Puppi_ULDATA2016postVFPF
0148 patMultPhiCorrParams_Puppi_ULDATA2016postVFPG = multPhiCorrParams_Puppi_Run2_ULDATA.multPhiCorr_Puppi_ULDATA2016postVFPG
0149 patMultPhiCorrParams_Puppi_ULDATA2016postVFPH = multPhiCorrParams_Puppi_Run2_ULDATA.multPhiCorr_Puppi_ULDATA2016postVFPH
0150 
0151 patPFMetTxyCorrTask = cms.Task(patPFMetTxyCorr)
0152 
0153 #--------------------------------------------------------------------------------
0154 from RecoMET.METProducers.METSigParams_cfi import *
0155 patSmearedJets = cms.EDProducer("SmearedPATJetProducer",
0156     src = cms.InputTag("patJets"),
0157 
0158     enabled = cms.bool(True),  # If False, no smearing is performed
0159 
0160     rho = cms.InputTag("fixedGridRhoFastjetAll"),
0161 
0162     skipGenMatching = cms.bool(False),  # If True, always skip gen jet matching and smear jet with a random gaussian
0163 
0164     # Resolution and scale factors source.
0165     # Can be either from GT or text files
0166     # For GT: only 'algo' must be set
0167     # For text files: both 'resolutionFile' and 'scaleFactorFile' must point to valid files
0168 
0169     # Read from GT
0170     algopt = cms.string('AK4PFchs_pt'),
0171     algo = cms.string('AK4PFchs'),
0172 
0173     # Or from text files
0174     #resolutionFile = cms.FileInPath('path/to/resolution_file.txt'),
0175     #scaleFactorFile = cms.FileInPath('path/to/scale_factor_file.txt'),
0176 
0177     # Gen jet matching
0178     genJets = cms.InputTag("ak4GenJetsNoNu"),
0179     dRMax = cms.double(0.2),  # = cone size (0.4) / 2
0180     dPtMaxFactor = cms.double(3),  # dPt < 3 * resolution
0181 
0182     # Systematic variation
0183     # 0: Nominal
0184     # -1: -1 sigma (down variation)
0185     # 1: +1 sigma (up variation)
0186     variation = cms.int32(0),  # If not specified, default to 0
0187 
0188     seed = cms.uint32(37428479),  # If not specified, default to 37428479
0189     useDeterministicSeed = cms.bool(True),
0190 
0191     debug = cms.untracked.bool(False)
0192 )
0193 
0194 selectedPatJetsForMetT1T2SmearCorr = cms.EDFilter("PATJetSelector",
0195     src = cms.InputTag('patSmearedJets'),
0196     cut = cms.string('abs(eta) < 9.9'),
0197     filter = cms.bool(False)
0198 )
0199 
0200 selectedPatJetsForMetT2SmearCorr = cms.EDFilter("PATJetSelector",
0201     src = cms.InputTag('patSmearedJets'),
0202     cut = cms.string('abs(eta) > 9.9'),
0203     filter = cms.bool(False)
0204 )
0205 
0206 patPFMetT1T2SmearCorr = patPFMetT1T2Corr.clone(
0207     src = 'selectedPatJetsForMetT1T2SmearCorr'
0208 )
0209 
0210 patPFMetT2SmearCorr = patPFMetT2Corr.clone(
0211     src = 'selectedPatJetsForMetT2SmearCorr'
0212 )
0213 
0214 patPFMetSmearCorrTask = cms.Task(patSmearedJets,
0215                                  selectedPatJetsForMetT1T2SmearCorr,
0216                                  patPFMetT1T2SmearCorr)
0217 
0218 #specific sequence for handling type2 correction with smeared jets
0219 patPFMetT2SmearCorrTask = cms.Task(patSmearedJets,
0220                                    selectedPatJetsForMetT1T2SmearCorr,
0221                                    selectedPatJetsForMetT2SmearCorr,
0222                                    patPFMetT1T2SmearCorr,
0223                                    patPFMetT2SmearCorr)
0224 
0225 #--------------------------------------------------------------------------------
0226 # use MET corrections to produce Type 1 / Type 1 + 2 corrected PFMET objects
0227 patPFMetT1 = cms.EDProducer("CorrectedPATMETProducer",
0228     src = cms.InputTag('patPFMet'),
0229     srcCorrections = cms.VInputTag(
0230         cms.InputTag('patPFMetT1T2Corr', 'type1'),
0231     ),
0232 )
0233 
0234 patPFMetT1T2 = patPFMetT1.clone()
0235 patPFMetT1T2.srcCorrections.append( cms.InputTag('patPFMetT2Corr',   'type2') )
0236 #--------------------------------------------------------------------------------
0237 #extra modules for naming scheme
0238 patPFMetT1Txy = patPFMetT1.clone()
0239 patPFMetT1Txy.srcCorrections.append( cms.InputTag('patPFMetTxyCorr') )
0240 
0241 patPFMetT0pcT1 = patPFMetT1.clone()
0242 patPFMetT0pcT1.srcCorrections.append( cms.InputTag('patPFMetT0Corr') )
0243 
0244 patPFMetT0pcT1Txy = patPFMetT0pcT1.clone()
0245 patPFMetT0pcT1Txy.srcCorrections.append( cms.InputTag('patPFMetTxyCorr') )
0246 
0247 patPFMetT1T2Txy = patPFMetT1T2.clone()
0248 patPFMetT1T2Txy.srcCorrections.append( cms.InputTag('patPFMetTxyCorr') )
0249 
0250 patPFMetT0pcT1T2 = patPFMetT1T2.clone()
0251 patPFMetT0pcT1T2.srcCorrections.append( cms.InputTag('patPFMetT0Corr') )
0252 
0253 patPFMetT0pcT1T2Txy = patPFMetT0pcT1T2.clone()
0254 patPFMetT0pcT1T2Txy.srcCorrections.append( cms.InputTag('patPFMetTxyCorr') )
0255 
0256 
0257 ## smeared METs
0258 patPFMetT1Smear = patPFMetT1.clone( 
0259     srcCorrections = ['patPFMetT1T2SmearCorr:type1']
0260 )
0261 
0262 patPFMetT1T2Smear = patPFMetT1Smear.clone()
0263 patPFMetT1T2Smear.srcCorrections.append( cms.InputTag('patPFMetT2SmearCorr',   'type2') )
0264 
0265 patPFMetT1TxySmear = patPFMetT1Smear.clone()
0266 patPFMetT1TxySmear.srcCorrections.append( cms.InputTag('patPFMetTxyCorr') )
0267 
0268 patPFMetT0pcT1Smear = patPFMetT1Smear.clone()
0269 patPFMetT0pcT1Smear.srcCorrections.append( cms.InputTag('patPFMetT0Corr') )
0270 
0271 patPFMetT0pcT1TxySmear = patPFMetT0pcT1Smear.clone()
0272 patPFMetT0pcT1TxySmear.srcCorrections.append( cms.InputTag('patPFMetTxyCorr') )
0273 
0274 patPFMetT1T2TxySmear = patPFMetT1T2Smear.clone()
0275 patPFMetT1T2TxySmear.srcCorrections.append( cms.InputTag('patPFMetTxyCorr') )
0276 
0277 patPFMetT0pcT1T2Smear = patPFMetT1T2Smear.clone()
0278 patPFMetT0pcT1T2Smear.srcCorrections.append( cms.InputTag('patPFMetT0Corr') )
0279 
0280 patPFMetT0pcT1T2TxySmear = patPFMetT0pcT1T2Smear.clone()
0281 patPFMetT0pcT1T2TxySmear.srcCorrections.append( cms.InputTag('patPFMetTxyCorr') )
0282 
0283 #--------------------------------------------------------------------------------
0284 # define sequence to run all modules
0285 producePatPFMETCorrectionsTask = cms.Task(
0286     patPFMet,
0287     pfCandsNotInJetsForMetCorr,
0288     selectedPatJetsForMetT1T2Corr,
0289     selectedPatJetsForMetT2Corr,
0290     patPFMetT1T2Corr,
0291     patPFMetT2Corr,
0292     type0PFMEtCorrectionPFCandToVertexAssociationTask,
0293     patPFMetT0Corr,
0294     pfCandMETcorr,
0295     patPFMetT1,
0296     patPFMetT1T2,
0297     patPFMetT0pcT1,
0298     patPFMetT0pcT1T2
0299 )
0300 #--------------------------------------------------------------------------------
0301 
0302 #
0303 # define special sequence for PAT runType1uncertainty tool
0304 # only preliminary modules processed
0305 # pat met producer modules cloned accordingly to what is needed
0306 producePatPFMETCorrectionsUncTask = cms.Task(
0307     patPFMet,
0308     pfCandsNotInJetsForMetCorr,
0309     selectedPatJetsForMetT1T2Corr,
0310     selectedPatJetsForMetT2Corr,
0311     patPFMetT1T2Corr,
0312     patPFMetT2Corr,
0313     type0PFMEtCorrectionPFCandToVertexAssociationTask,
0314     patPFMetT0Corr,
0315     pfCandMETcorr
0316 )