1 from __future__
import print_function
2 import FWCore.ParameterSet.Config
as cms
22 from Configuration.Eras.Modifier_run2_miniAOD_80XLegacy_cff
import run2_miniAOD_80XLegacy
23 from Configuration.Eras.Modifier_run2_nanoAOD_92X_cff
import run2_nanoAOD_92X
24 from Configuration.Eras.Modifier_run2_nanoAOD_94X2016_cff
import run2_nanoAOD_94X2016
25 from Configuration.Eras.Modifier_run2_nanoAOD_94XMiniAODv1_cff
import run2_nanoAOD_94XMiniAODv1
26 from Configuration.Eras.Modifier_run2_nanoAOD_94XMiniAODv2_cff
import run2_nanoAOD_94XMiniAODv2
27 from Configuration.Eras.Modifier_run2_nanoAOD_102Xv1_cff
import run2_nanoAOD_102Xv1
28 from Configuration.Eras.Modifier_run2_nanoAOD_106Xv1_cff
import run2_nanoAOD_106Xv1
29 from Configuration.Eras.Modifier_run2_miniAOD_devel_cff
import run2_miniAOD_devel
30 from Configuration.Eras.Modifier_run2_tau_ul_2016_cff
import run2_tau_ul_2016
31 from Configuration.Eras.Modifier_run2_tau_ul_2018_cff
import run2_tau_ul_2018
32 from Configuration.Eras.Modifier_run2_egamma_2017_cff
import run2_egamma_2017
33 from Configuration.Eras.Modifier_run2_egamma_2018_cff
import run2_egamma_2018
35 nanoMetadata = cms.EDProducer(
"UniqueStringProducer",
37 tag = cms.string(
"untagged"),
41 linkedObjects = cms.EDProducer(
"PATObjectCrossLinker",
42 jets=cms.InputTag(
"finalJets"),
43 muons=cms.InputTag(
"finalMuons"),
44 electrons=cms.InputTag(
"finalElectrons"),
45 taus=cms.InputTag(
"finalTaus"),
46 photons=cms.InputTag(
"finalPhotons"),
49 simpleCleanerTable = cms.EDProducer(
"NanoAODSimpleCrossCleaner",
50 name=cms.string(
"cleanmask"),
51 doc=cms.string(
"simple cleaning mask with priority to leptons"),
52 jets=cms.InputTag(
"linkedObjects",
"jets"),
53 muons=cms.InputTag(
"linkedObjects",
"muons"),
54 electrons=cms.InputTag(
"linkedObjects",
"electrons"),
55 taus=cms.InputTag(
"linkedObjects",
"taus"),
56 photons=cms.InputTag(
"linkedObjects",
"photons"),
57 jetSel=cms.string(
"pt>15"),
58 muonSel=cms.string(
"track.isNonnull && isLooseMuon && isPFMuon && innerTrack.validFraction >= 0.49 && ( isGlobalMuon && globalTrack.normalizedChi2 < 3 && combinedQuality.chi2LocalPosition < 12 && combinedQuality.trkKink < 20 && segmentCompatibility >= 0.303 || segmentCompatibility >= 0.451 )"),
59 electronSel=cms.string(
""),
60 tauSel=cms.string(
""),
61 photonSel=cms.string(
""),
62 jetName=cms.string(
"Jet"),muonName=cms.string(
"Muon"),electronName=cms.string(
"Electron"),
63 tauName=cms.string(
"Tau"),photonName=cms.string(
"Photon")
66 btagSFdir=
"PhysicsTools/NanoAOD/data/btagSF/" 68 btagWeightTable = cms.EDProducer(
"BTagSFProducer",
69 src = cms.InputTag(
"linkedObjects",
"jets"),
70 cut = cms.string(
"pt > 25. && abs(eta) < 2.5"),
71 discNames = cms.vstring(
72 "pfCombinedInclusiveSecondaryVertexV2BJetTags",
73 "pfDeepCSVJetTags:probb+pfDeepCSVJetTags:probbb",
74 "pfCombinedMVAV2BJetTags" 76 discShortNames = cms.vstring(
81 weightFiles = cms.vstring(
82 btagSFdir+
"CSVv2_94XSF_V2_B_F.csv",
83 btagSFdir+
"DeepCSV_94XSF_V2_B_F.csv",
86 operatingPoints = cms.vstring(
"3",
"3",
"3"),
87 measurementTypesB = cms.vstring(
"iterativefit",
"iterativefit",
"iterativefit"),
88 measurementTypesC = cms.vstring(
"iterativefit",
"iterativefit",
"iterativefit"),
89 measurementTypesUDSG = cms.vstring(
"iterativefit",
"iterativefit",
"iterativefit"),
90 sysTypes = cms.vstring(
"central",
"central",
"central")
93 for modifier
in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016:
94 modifier.toModify(btagWeightTable,
95 cut = cms.string(
"pt > 25. && abs(eta) < 2.4"),
96 weightFiles = cms.vstring(
97 btagSFdir+
"CSVv2_Moriond17_B_H.csv",
99 btagSFdir+
"cMVAv2_Moriond17_B_H.csv" 104 lheInfoTable = cms.EDProducer(
"LHETablesProducer",
105 lheInfo = cms.VInputTag(cms.InputTag(
"externalLHEProducer"), cms.InputTag(
"source")),
106 precision = cms.int32(14),
107 storeLHEParticles = cms.bool(
True)
110 l1bits=cms.EDProducer(
"L1TriggerResultsConverter", src=cms.InputTag(
"gtStage2Digis"), legacyL1=cms.bool(
False),
111 storeUnprefireableBit=cms.bool(
True), src_ext=cms.InputTag(
"gtStage2Digis"))
112 (run2_miniAOD_80XLegacy | run2_nanoAOD_94X2016 | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_102Xv1).toModify(l1bits, storeUnprefireableBit=
False)
114 nanoSequenceCommon = cms.Sequence(
115 nanoMetadata + jetSequence + muonSequence + tauSequence + electronSequence+photonSequence+vertexSequence+
116 isoTrackSequence + jetLepSequence +
118 jetTables + muonTables + tauTables + electronTables + photonTables + globalTables +vertexTables+ metTables+simpleCleanerTable + isoTrackTables
120 nanoSequenceOnlyFullSim = cms.Sequence(triggerObjectTables + l1bits)
122 nanoSequence = cms.Sequence(nanoSequenceCommon + nanoSequenceOnlyFullSim)
124 nanoSequenceFS = cms.Sequence(genParticleSequence + genVertexTables + particleLevelSequence + nanoSequenceCommon + jetMC + muonMC + electronMC + photonMC + tauMC + metMC + ttbarCatMCProducers + globalTablesMC + btagWeightTable + genWeightsTable + genVertexTable + genParticleTables + particleLevelTables + lheInfoTable + ttbarCategoryTable )
126 (run2_nanoAOD_92X | run2_miniAOD_80XLegacy | run2_nanoAOD_94X2016 | run2_nanoAOD_94X2016 | \
127 run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | \
128 run2_nanoAOD_102Xv1).toReplaceWith(nanoSequenceFS, nanoSequenceFS.copyAndExclude([genVertexTable, genVertexT0Table]))
131 nanoSequenceMC = nanoSequenceFS.copy()
132 nanoSequenceMC.insert(nanoSequenceFS.index(nanoSequenceCommon)+1,nanoSequenceOnlyFullSim)
135 for modifier
in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2, run2_nanoAOD_102Xv1:
136 modifier.toModify(extraFlagsTable, variables= cms.PSet())
137 modifier.toModify(extraFlagsTable, variables =
dict(Flag_ecalBadCalibFilterV2 =
ExtVar(cms.InputTag(
"ecalBadCalibFilterNanoTagger"), bool, doc =
"Bad ECAL calib flag (updated xtal list)")))
140 import RecoTauTag.RecoTau.tools.runTauIdMVA
as tauIdConfig
142 updatedTauName =
"slimmedTausUpdated" 143 tauIdEmbedder = tauIdConfig.TauIDEmbedder(process, cms, debug =
False, updatedTauName = updatedTauName,
144 toKeep = [
"deepTau2017v2p1" ])
145 tauIdEmbedder.runTauID()
146 process.patTauMVAIDsSeq.insert(process.patTauMVAIDsSeq.index(getattr(process, updatedTauName)),
147 process.rerunMvaIsolationSequence)
152 _btagDiscriminators=[]
154 print(
"Updating process to run DeepCSV btag")
155 _btagDiscriminators += [
'pfDeepCSVJetTags:probb',
'pfDeepCSVJetTags:probbb',
'pfDeepCSVJetTags:probc']
157 print(
"Updating process to run DeepFlavour btag")
158 _btagDiscriminators += [
'pfDeepFlavourJetTags:probb',
'pfDeepFlavourJetTags:probbb',
'pfDeepFlavourJetTags:problepb',
'pfDeepFlavourJetTags:probc']
159 if len(_btagDiscriminators)==0:
return process
160 print(
"Will recalculate the following discriminators: "+
", ".
join(_btagDiscriminators))
163 jetSource = cms.InputTag(
'slimmedJets'),
164 jetCorrections = (
'AK4PFchs', cms.vstring([
'L1FastJet',
'L2Relative',
'L3Absolute',
'L2L3Residual']),
'None'),
165 btagDiscriminators = _btagDiscriminators,
166 postfix =
'WithDeepInfo',
168 process.load(
"Configuration.StandardSequences.MagneticField_cff")
169 process.jetCorrFactorsNano.src=
"selectedUpdatedPatJetsWithDeepInfo" 170 process.updatedJets.jetSource=
"selectedUpdatedPatJetsWithDeepInfo" 174 if addDeepMETProducer:
176 print(
"add DeepMET Producers")
177 process.load(
'RecoMET.METPUSubtraction.deepMETProducer_cfi')
178 process.deepMETsResolutionTune = process.deepMETProducer.clone()
179 process.deepMETsResponseTune = process.deepMETProducer.clone()
181 process.deepMETsResponseTune.graph_path = ResponseTune_Graph.value()
182 process.metTables += process.deepMetTables
185 from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties
import runMetCorAndUncFromMiniAOD
186 from PhysicsTools.PatAlgos.slimming.puppiForMET_cff
import makePuppiesFromMiniAOD
189 nanoAOD_DeepMET_switch = cms.PSet(
190 nanoAOD_addDeepMET_switch = cms.untracked.bool(
True),
191 nanoAOD_produceDeepMET_switch = cms.untracked.bool(
False),
192 ResponseTune_Graph = cms.untracked.string(
'RecoMET/METPUSubtraction/data/deepmet/deepmet_resp_v1_2018.pb')
195 (~run2_miniAOD_devel).toModify(nanoAOD_DeepMET_switch, nanoAOD_produceDeepMET_switch = cms.untracked.bool(
True))
196 for modifier
in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016:
197 modifier.toModify(nanoAOD_DeepMET_switch, ResponseTune_Graph=cms.untracked.string(
"RecoMET/METPUSubtraction/data/deepmet/deepmet_resp_v1_2016.pb"))
198 if nanoAOD_DeepMET_switch.nanoAOD_addDeepMET_switch:
200 addDeepMETProducer=nanoAOD_DeepMET_switch.nanoAOD_produceDeepMET_switch,
201 ResponseTune_Graph=nanoAOD_DeepMET_switch.ResponseTune_Graph)
204 extractDeepMETs = nanoAOD_DeepMET_switch.nanoAOD_addDeepMET_switch
and not nanoAOD_DeepMET_switch.nanoAOD_produceDeepMET_switch
207 process.nanoSequenceCommon.insert(process.nanoSequenceCommon.index(process.jetSequence),cms.Sequence(process.fullPatMetSequence))
208 process.basicJetsForMetForT1METNano = process.basicJetsForMet.clone(
209 src = process.updatedJetsWithUserData.src,
211 type1JetPtThreshold = 0.0,
212 calcMuonSubtrRawPtAsValueMap = cms.bool(
True),
214 process.jetSequence.insert(process.jetSequence.index(process.updatedJetsWithUserData),cms.Sequence(process.basicJetsForMetForT1METNano))
215 process.updatedJetsWithUserData.userFloats.muonSubtrRawPt = cms.InputTag(
"basicJetsForMetForT1METNano:MuonSubtrRawPt")
216 process.corrT1METJetTable.src = process.finalJets.src
217 process.corrT1METJetTable.cut =
"pt<15 && abs(eta)<9.9" 218 for table
in process.jetTable, process.corrT1METJetTable:
219 table.variables.muonSubtrFactor =
Var(
"1-userFloat('muonSubtrRawPt')/(pt()*jecFactor('Uncorrected'))",float,doc=
"1-(muon-subtracted raw pt)/(raw pt)",precision=6)
220 process.metTables += process.corrT1METJetTable
223 process.nanoSequenceCommon.insert(process.nanoSequenceCommon.index(process.jetSequence),cms.Sequence(process.puppiMETSequence+process.fullPatMetSequencePuppi))
229 for modname
in electron_id_modules_WorkingPoints_nanoAOD.modules:
231 process.electronSequence.insert(process.electronSequence.index(process.bitmapVIDForEle),process.egmGsfElectronIDSequence)
232 for modifier
in run2_egamma_2017,run2_egamma_2018,run2_miniAOD_80XLegacy,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_94X2016,run2_nanoAOD_102Xv1,run2_nanoAOD_106Xv1:
233 modifier.toModify(process.electronMVAValueMapProducer, srcMiniAOD =
"slimmedElectronsUpdated")
234 modifier.toModify(process.egmGsfElectronIDs, physicsObjectSrc =
"slimmedElectronsUpdated")
237 for modname
in photon_id_modules_WorkingPoints_nanoAOD.modules:
239 process.photonSequence.insert(process.photonSequence.index(bitmapVIDForPho),process.egmPhotonIDSequence)
240 for modifier
in run2_miniAOD_80XLegacy,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_94X2016 ,run2_nanoAOD_102Xv1:
241 modifier.toModify(process.photonMVAValueMapProducer, srcMiniAOD =
"slimmedPhotonsTo106X")
242 modifier.toModify(process.egmPhotonIDs, physicsObjectSrc =
"slimmedPhotonsTo106X")
245 def nanoAOD_addDeepInfoAK8(process, addDeepBTag, addDeepBoostedJet, addDeepDoubleX, addDeepDoubleXV2, addParticleNet, jecPayload):
246 _btagDiscriminators=[]
248 print(
"Updating process to run DeepCSV btag to AK8 jets")
249 _btagDiscriminators += [
'pfDeepCSVJetTags:probb',
'pfDeepCSVJetTags:probbb']
250 if addDeepBoostedJet:
251 print(
"Updating process to run DeepBoostedJet on datasets before 103X")
253 _btagDiscriminators += pfDeepBoostedJetTagsAll
255 print(
"Updating process to run ParticleNet before it's included in MiniAOD")
257 _btagDiscriminators += pfParticleNetJetTagsAll
259 print(
"Updating process to run DeepDoubleX on datasets before 104X")
260 _btagDiscriminators += [
'pfDeepDoubleBvLJetTags:probHbb', \
261 'pfDeepDoubleCvLJetTags:probHcc', \
262 'pfDeepDoubleCvBJetTags:probHcc', \
263 'pfMassIndependentDeepDoubleBvLJetTags:probHbb',
'pfMassIndependentDeepDoubleCvLJetTags:probHcc',
'pfMassIndependentDeepDoubleCvBJetTags:probHcc']
265 print(
"Updating process to run DeepDoubleXv2 on datasets before 11X")
266 _btagDiscriminators += [
267 'pfMassIndependentDeepDoubleBvLV2JetTags:probHbb',
268 'pfMassIndependentDeepDoubleCvLV2JetTags:probHcc',
269 'pfMassIndependentDeepDoubleCvBV2JetTags:probHcc' 271 if len(_btagDiscriminators)==0:
return process
272 print(
"Will recalculate the following discriminators on AK8 jets: "+
", ".
join(_btagDiscriminators))
275 jetSource = cms.InputTag(
'slimmedJetsAK8'),
276 pvSource = cms.InputTag(
'offlineSlimmedPrimaryVertices'),
277 svSource = cms.InputTag(
'slimmedSecondaryVertices'),
279 jetCorrections = (jecPayload.value(), cms.vstring([
'L1FastJet',
'L2Relative',
'L3Absolute',
'L2L3Residual']),
'None'),
280 btagDiscriminators = _btagDiscriminators,
281 postfix=
'AK8WithDeepInfo',
284 process.jetCorrFactorsAK8.src=
"selectedUpdatedPatJetsAK8WithDeepInfo" 285 process.updatedJetsAK8.jetSource=
"selectedUpdatedPatJetsAK8WithDeepInfo" 288 from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties
import runMetCorAndUncFromMiniAOD
292 fixEE2017Params = {
'userawPt':
True,
'ptThreshold':50.0,
'minEtaThreshold':2.65,
'maxEtaThreshold': 3.139},
293 postfix =
"FixEE2017")
294 process.nanoSequenceCommon.insert(process.nanoSequenceCommon.index(jetSequence),process.fullPatMetSequenceFixEE2017)
298 process.puppiNoLep.useExistingWeights =
True 299 process.puppi.useExistingWeights =
True 300 run2_nanoAOD_106Xv1.toModify(process.puppiNoLep, useExistingWeights =
False)
301 run2_nanoAOD_106Xv1.toModify(process.puppi, useExistingWeights =
False)
303 nanoAOD_addDeepInfo_switch = cms.PSet(
304 nanoAOD_addDeepBTag_switch = cms.untracked.bool(
False),
305 nanoAOD_addDeepFlavourTag_switch = cms.untracked.bool(
False),
307 run2_miniAOD_80XLegacy.toModify(nanoAOD_addDeepInfo_switch, nanoAOD_addDeepBTag_switch = cms.untracked.bool(
True))
308 for modifier
in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016, run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2:
309 modifier.toModify(nanoAOD_addDeepInfo_switch, nanoAOD_addDeepFlavourTag_switch = cms.untracked.bool(
True))
311 addDeepBTag=nanoAOD_addDeepInfo_switch.nanoAOD_addDeepBTag_switch,
312 addDeepFlavour=nanoAOD_addDeepInfo_switch.nanoAOD_addDeepFlavourTag_switch)
313 nanoAOD_addDeepInfoAK8_switch = cms.PSet(
314 nanoAOD_addDeepBTag_switch = cms.untracked.bool(
False),
315 nanoAOD_addDeepBoostedJet_switch = cms.untracked.bool(
True),
316 nanoAOD_addDeepDoubleX_switch = cms.untracked.bool(
True),
317 nanoAOD_addDeepDoubleXV2_switch = cms.untracked.bool(
True),
318 nanoAOD_addParticleNet_switch = cms.untracked.bool(
True),
319 jecPayload = cms.untracked.string(
'AK8PFPuppi')
323 run2_miniAOD_80XLegacy.toModify(nanoAOD_addDeepInfoAK8_switch,
324 nanoAOD_addDeepBTag_switch =
True,
325 nanoAOD_addDeepBoostedJet_switch =
False,
326 nanoAOD_addDeepDoubleX_switch =
False,
327 nanoAOD_addDeepDoubleXV2_switch =
False,
328 nanoAOD_addParticleNet_switch =
False,
329 jecPayload =
'AK8PFchs')
331 run2_miniAOD_devel.toModify(
332 nanoAOD_addDeepInfoAK8_switch,
333 nanoAOD_addDeepBoostedJet_switch =
False,
334 nanoAOD_addDeepDoubleX_switch =
False,
335 nanoAOD_addDeepDoubleXV2_switch =
False,
336 nanoAOD_addParticleNet_switch =
False,
338 run2_nanoAOD_106Xv1.toModify(
339 nanoAOD_addDeepInfoAK8_switch,
340 nanoAOD_addDeepBoostedJet_switch =
False,
341 nanoAOD_addDeepDoubleX_switch =
False,
344 addDeepBTag=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addDeepBTag_switch,
345 addDeepBoostedJet=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addDeepBoostedJet_switch,
346 addDeepDoubleX=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addDeepDoubleX_switch,
347 addDeepDoubleXV2=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addDeepDoubleXV2_switch,
348 addParticleNet=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addParticleNet_switch,
349 jecPayload=nanoAOD_addDeepInfoAK8_switch.jecPayload)
350 addTauIds_switch = cms.PSet(
351 nanoAOD_addTauIds_switch = cms.untracked.bool(
True)
353 run2_miniAOD_80XLegacy.toModify(addTauIds_switch, nanoAOD_addTauIds_switch = cms.untracked.bool(
False))
354 ((run2_miniAOD_devel | run2_tau_ul_2016 | run2_tau_ul_2018) & \
355 (~(run2_nanoAOD_94X2016 | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_102Xv1 | run2_nanoAOD_106Xv1))).toModify(addTauIds_switch,
356 nanoAOD_addTauIds_switch = cms.untracked.bool(
False))
357 if addTauIds_switch.nanoAOD_addTauIds_switch:
364 for modifier
in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2:
371 for modifier
in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2:
376 _80x_sequence = nanoSequenceCommon.copy()
378 _80x_sequence.remove(isoTrackTables)
379 _80x_sequence.remove(isoTrackSequence)
381 _80x_sequence.insert(_80x_sequence.index(jetSequence), extraFlagsProducers)
382 _80x_sequence.insert(_80x_sequence.index(simpleCleanerTable)+1, extraFlagsTable)
384 run2_miniAOD_80XLegacy.toReplaceWith( nanoSequenceCommon, _80x_sequence)
386 _102x_sequence = nanoSequenceCommon.copy()
388 _102x_sequence.insert(_102x_sequence.index(jetSequence),extraFlagsProducers102x)
389 _102x_sequence.insert(_102x_sequence.index(simpleCleanerTable)+1,extraFlagsTable)
391 for modifier
in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2, run2_nanoAOD_102Xv1:
392 modifier.toReplaceWith(nanoSequenceCommon, _102x_sequence)
def nanoAOD_addDeepInfo(process, addDeepBTag, addDeepFlavour)
def ExtVar(tag, valtype, compression=None, doc=None, mcOnly=False, precision=-1)
S & print(S &os, JobReport::InputFile const &f)
def nanoAOD_customizeMC(process)
def nanoAOD_activateVID(process)
def Var(expr, valtype, compression=None, doc=None, mcOnly=False, precision=-1)
def nanoAOD_customizeCommon(process)
def nanoAOD_recalibrateMETs(process, isData)
def nanoAOD_runMETfixEE2017(process, isData)
static std::string join(char **cmd)
def nanoAOD_addTauIds(process)
def nanoAOD_addDeepMET(process, addDeepMETProducer, ResponseTune_Graph)
def runMetCorAndUncFromMiniAOD(process, metType="PF", jetCollUnskimmed="slimmedJets", photonColl="slimmedPhotons", electronColl="slimmedElectrons", muonColl="slimmedMuons", tauColl="slimmedTaus", pfCandColl="packedPFCandidates", jetFlavor="AK4PFchs", jetCleaning="LepClean", isData=False, manualJetConfig=False, reclusterJets=None, jetSelection="pt>15 && abs(eta)<9.9", recoMetFromPFCs=None, jetCorLabelL3="ak4PFCHSL1FastL2L3Corrector", jetCorLabelRes="ak4PFCHSL1FastL2L3ResidualCorrector", CHS=False, reapplyJEC=True, jecUncFile="", computeMETSignificance=True, fixEE2017=False, fixEE2017Params=None, extractDeepMETs=False, postfix="")
def nanoAOD_addDeepInfoAK8(process, addDeepBTag, addDeepBoostedJet, addDeepDoubleX, addDeepDoubleXV2, addParticleNet, jecPayload)
def nanoAOD_customizeData(process)