1 from __future__
import print_function
2 import FWCore.ParameterSet.Config
as cms
25 nanoMetadata = cms.EDProducer(
"UniqueStringProducer",
27 tag = cms.string(
"untagged"),
31 linkedObjects = cms.EDProducer(
"PATObjectCrossLinker",
32 jets=cms.InputTag(
"finalJets"),
33 muons=cms.InputTag(
"finalMuons"),
34 electrons=cms.InputTag(
"finalElectrons"),
35 taus=cms.InputTag(
"finalTaus"),
36 photons=cms.InputTag(
"finalPhotons"),
39 simpleCleanerTable = cms.EDProducer(
"NanoAODSimpleCrossCleaner",
40 name=cms.string(
"cleanmask"),
41 doc=cms.string(
"simple cleaning mask with priority to leptons"),
42 jets=cms.InputTag(
"linkedObjects",
"jets"),
43 muons=cms.InputTag(
"linkedObjects",
"muons"),
44 electrons=cms.InputTag(
"linkedObjects",
"electrons"),
45 taus=cms.InputTag(
"linkedObjects",
"taus"),
46 photons=cms.InputTag(
"linkedObjects",
"photons"),
47 jetSel=cms.string(
"pt>15"),
48 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 )"),
49 electronSel=cms.string(
""),
50 tauSel=cms.string(
""),
51 photonSel=cms.string(
""),
52 jetName=cms.string(
"Jet"),muonName=cms.string(
"Muon"),electronName=cms.string(
"Electron"),
53 tauName=cms.string(
"Tau"),photonName=cms.string(
"Photon")
56 btagSFdir=
"PhysicsTools/NanoAOD/data/btagSF/"
58 btagWeightTable = cms.EDProducer(
"BTagSFProducer",
59 src = cms.InputTag(
"linkedObjects",
"jets"),
60 cut = cms.string(
"pt > 25. && abs(eta) < 2.5"),
61 discNames = cms.vstring(
62 "pfCombinedInclusiveSecondaryVertexV2BJetTags",
63 "pfDeepCSVJetTags:probb+pfDeepCSVJetTags:probbb",
64 "pfCombinedMVAV2BJetTags"
66 discShortNames = cms.vstring(
71 weightFiles = cms.vstring(
72 btagSFdir+
"CSVv2_94XSF_V2_B_F.csv",
73 btagSFdir+
"DeepCSV_94XSF_V2_B_F.csv",
76 operatingPoints = cms.vstring(
"3",
"3",
"3"),
77 measurementTypesB = cms.vstring(
"iterativefit",
"iterativefit",
"iterativefit"),
78 measurementTypesC = cms.vstring(
"iterativefit",
"iterativefit",
"iterativefit"),
79 measurementTypesUDSG = cms.vstring(
"iterativefit",
"iterativefit",
"iterativefit"),
80 sysTypes = cms.vstring(
"central",
"central",
"central")
83 for modifier
in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016:
84 modifier.toModify(btagWeightTable,
85 cut = cms.string(
"pt > 25. && abs(eta) < 2.4"),
86 weightFiles = cms.vstring(
87 btagSFdir+
"CSVv2_Moriond17_B_H.csv",
89 btagSFdir+
"cMVAv2_Moriond17_B_H.csv"
93 lhcInfoTable = cms.EDProducer(
"LHCInfoProducer",
94 precision = cms.int32(10),
97 lheInfoTable = cms.EDProducer(
"LHETablesProducer",
98 lheInfo = cms.VInputTag(cms.InputTag(
"externalLHEProducer"), cms.InputTag(
"source")),
99 precision = cms.int32(14),
100 storeLHEParticles = cms.bool(
True)
103 l1bits=cms.EDProducer(
"L1TriggerResultsConverter", src=cms.InputTag(
"gtStage2Digis"), legacyL1=cms.bool(
False),
104 storeUnprefireableBit=cms.bool(
True), src_ext=cms.InputTag(
"gtStage2Digis"))
105 (run2_miniAOD_80XLegacy | run2_nanoAOD_94X2016 | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_102Xv1).toModify(l1bits, storeUnprefireableBit=
False)
107 nanoSequenceCommon = cms.Sequence(
108 nanoMetadata + jetSequence + muonSequence + tauSequence + electronSequence+photonSequence+vertexSequence+
109 isoTrackSequence + jetLepSequence +
111 jetTables + muonTables + tauTables + electronTables + photonTables + globalTables +vertexTables+ metTables+simpleCleanerTable + isoTrackTables
113 nanoSequenceOnlyFullSim = cms.Sequence(triggerObjectTables + l1bits)
114 nanoSequenceOnlyData = cms.Sequence(protonTables + lhcInfoTable)
116 nanoSequence = cms.Sequence(nanoSequenceCommon + nanoSequenceOnlyData + nanoSequenceOnlyFullSim)
118 nanoSequenceFS = cms.Sequence(genParticleSequence + genVertexTables + particleLevelSequence + nanoSequenceCommon + jetMC + muonMC + electronMC + photonMC + tauMC + metMC + ttbarCatMCProducers + globalTablesMC + btagWeightTable + genWeightsTable + genVertexTable + genParticleTables + particleLevelTables + lheInfoTable + ttbarCategoryTable )
120 (run2_nanoAOD_92X | run2_miniAOD_80XLegacy | run2_nanoAOD_94X2016 | run2_nanoAOD_94X2016 | \
121 run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | \
122 run2_nanoAOD_102Xv1).toReplaceWith(nanoSequenceFS, nanoSequenceFS.copyAndExclude([genVertexTable, genVertexT0Table]))
125 nanoSequenceMC = nanoSequenceFS.copy()
126 nanoSequenceMC.insert(nanoSequenceFS.index(nanoSequenceCommon)+1,nanoSequenceOnlyFullSim)
129 for modifier
in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2, run2_nanoAOD_102Xv1:
130 modifier.toModify(extraFlagsTable, variables= cms.PSet())
131 modifier.toModify(extraFlagsTable, variables = dict(Flag_ecalBadCalibFilterV2 =
ExtVar(cms.InputTag(
"ecalBadCalibFilterNanoTagger"), bool, doc =
"Bad ECAL calib flag (updated xtal list)")))
134 import RecoTauTag.RecoTau.tools.runTauIdMVA
as tauIdConfig
136 updatedTauName =
"slimmedTausUpdated"
137 tauIdEmbedder = tauIdConfig.TauIDEmbedder(process, debug =
False, updatedTauName = updatedTauName,
138 toKeep = [
"deepTau2017v2p1" ])
139 tauIdEmbedder.runTauID()
140 process.patTauMVAIDsSeq.insert(process.patTauMVAIDsSeq.index(getattr(process, updatedTauName)),
141 process.rerunMvaIsolationSequence)
146 _btagDiscriminators=[]
148 print(
"Updating process to run DeepCSV btag")
149 _btagDiscriminators += [
'pfDeepCSVJetTags:probb',
'pfDeepCSVJetTags:probbb',
'pfDeepCSVJetTags:probc']
151 print(
"Updating process to run DeepFlavour btag")
152 _btagDiscriminators += [
'pfDeepFlavourJetTags:probb',
'pfDeepFlavourJetTags:probbb',
'pfDeepFlavourJetTags:problepb',
'pfDeepFlavourJetTags:probc']
153 if len(_btagDiscriminators)==0:
return process
154 print(
"Will recalculate the following discriminators: "+
", ".
join(_btagDiscriminators))
157 jetSource = cms.InputTag(
'slimmedJets'),
158 jetCorrections = (
'AK4PFchs', cms.vstring([
'L1FastJet',
'L2Relative',
'L3Absolute',
'L2L3Residual']),
'None'),
159 btagDiscriminators = _btagDiscriminators,
160 postfix =
'WithDeepInfo',
162 process.load(
"Configuration.StandardSequences.MagneticField_cff")
163 process.jetCorrFactorsNano.src=
"selectedUpdatedPatJetsWithDeepInfo"
164 process.updatedJets.jetSource=
"selectedUpdatedPatJetsWithDeepInfo"
168 if addDeepMETProducer:
170 print(
"add DeepMET Producers")
171 process.load(
'RecoMET.METPUSubtraction.deepMETProducer_cfi')
172 process.deepMETsResolutionTune = process.deepMETProducer.clone()
173 process.deepMETsResponseTune = process.deepMETProducer.clone()
175 process.deepMETsResponseTune.graph_path = ResponseTune_Graph.value()
176 process.metTables += process.deepMetTables
179 from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties
import runMetCorAndUncFromMiniAOD
180 from PhysicsTools.PatAlgos.slimming.puppiForMET_cff
import makePuppiesFromMiniAOD
183 nanoAOD_DeepMET_switch = cms.PSet(
184 nanoAOD_addDeepMET_switch = cms.untracked.bool(
True),
185 nanoAOD_produceDeepMET_switch = cms.untracked.bool(
False),
186 ResponseTune_Graph = cms.untracked.string(
'RecoMET/METPUSubtraction/data/deepmet/deepmet_resp_v1_2018.pb')
188 for modifier
in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016, run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2, run2_nanoAOD_102Xv1, run2_nanoAOD_106Xv1:
190 modifier.toModify(nanoAOD_DeepMET_switch, nanoAOD_produceDeepMET_switch = cms.untracked.bool(
True))
191 for modifier
in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016:
192 modifier.toModify(nanoAOD_DeepMET_switch, ResponseTune_Graph=cms.untracked.string(
"RecoMET/METPUSubtraction/data/deepmet/deepmet_resp_v1_2016.pb"))
193 if nanoAOD_DeepMET_switch.nanoAOD_addDeepMET_switch:
195 addDeepMETProducer=nanoAOD_DeepMET_switch.nanoAOD_produceDeepMET_switch,
196 ResponseTune_Graph=nanoAOD_DeepMET_switch.ResponseTune_Graph)
199 extractDeepMETs = nanoAOD_DeepMET_switch.nanoAOD_addDeepMET_switch
and not nanoAOD_DeepMET_switch.nanoAOD_produceDeepMET_switch
202 process.nanoSequenceCommon.insert(process.nanoSequenceCommon.index(process.jetSequence),cms.Sequence(process.fullPatMetSequence))
203 process.basicJetsForMetForT1METNano = process.basicJetsForMet.clone(
204 src = process.updatedJetsWithUserData.src,
206 type1JetPtThreshold = 0.0,
207 calcMuonSubtrRawPtAsValueMap = cms.bool(
True),
209 process.jetSequence.insert(process.jetSequence.index(process.updatedJetsWithUserData),cms.Sequence(process.basicJetsForMetForT1METNano))
210 process.updatedJetsWithUserData.userFloats.muonSubtrRawPt = cms.InputTag(
"basicJetsForMetForT1METNano:MuonSubtrRawPt")
211 process.corrT1METJetTable.src = process.finalJets.src
212 process.corrT1METJetTable.cut =
"pt<15 && abs(eta)<9.9"
213 for table
in process.jetTable, process.corrT1METJetTable:
214 table.variables.muonSubtrFactor =
Var(
"1-userFloat('muonSubtrRawPt')/(pt()*jecFactor('Uncorrected'))",float,doc=
"1-(muon-subtracted raw pt)/(raw pt)",precision=6)
215 process.metTables += process.corrT1METJetTable
217 nanoAOD_PuppiV15_switch = cms.PSet(
218 recoMetFromPFCs = cms.untracked.bool(
False),
219 reclusterJets = cms.untracked.bool(
False),
221 run2_nanoAOD_106Xv1.toModify(nanoAOD_PuppiV15_switch,recoMetFromPFCs=
True,reclusterJets=
True)
222 if nanoAOD_PuppiV15_switch.reclusterJets:
226 addToProcessAndTask(
'ak4PuppiJets', ak4PFJets.clone (src =
'puppi', doAreaFastjet =
True, jetPtMin = 10.), process, task)
228 addJetCollection(process,
230 jetSource = cms.InputTag(
'ak4PuppiJets'),
231 algo =
'AK', rParam=0.4,
232 genJetCollection=cms.InputTag(
'slimmedGenJets'),
233 jetCorrections = (
'AK4PFPuppi', [
'L1FastJet',
'L2Relative',
'L3Absolute',
'L2L3Residual'],
'None'),
234 pfCandidates = cms.InputTag(
'packedPFCandidates'),
235 pvSource = cms.InputTag(
'offlineSlimmedPrimaryVertices'),
236 svSource = cms.InputTag(
'slimmedSecondaryVertices'),
237 muSource =cms.InputTag(
'slimmedMuons'),
238 elSource = cms.InputTag(
'slimmedElectrons'),
239 genParticles= cms.InputTag(
'prunedGenParticles'),
240 getJetMCFlavour=
False
243 process.patJetsPuppi.addGenPartonMatch = cms.bool(
False)
244 process.patJetsPuppi.addGenJetMatch = cms.bool(
False)
246 runMetCorAndUncFromMiniAOD(process,isData=isData,metType=
"Puppi",postfix=
"Puppi",jetFlavor=
"AK4PFPuppi", recoMetFromPFCs=
bool(nanoAOD_PuppiV15_switch.recoMetFromPFCs), reclusterJets=
bool(nanoAOD_PuppiV15_switch.reclusterJets))
247 process.nanoSequenceCommon.insert(process.nanoSequenceCommon.index(process.jetSequence),cms.Sequence(process.puppiMETSequence+process.fullPatMetSequencePuppi))
253 for modname
in electron_id_modules_WorkingPoints_nanoAOD.modules:
255 process.electronSequence.insert(process.electronSequence.index(process.bitmapVIDForEle),process.egmGsfElectronIDSequence)
256 for modifier
in run2_miniAOD_80XLegacy,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_94X2016,run2_nanoAOD_102Xv1,run2_nanoAOD_106Xv1:
257 modifier.toModify(process.electronMVAValueMapProducer, src =
"slimmedElectronsUpdated")
258 modifier.toModify(process.egmGsfElectronIDs, physicsObjectSrc =
"slimmedElectronsUpdated")
260 run2_nanoAOD_106Xv2.toModify(process.electronMVAValueMapProducer, src =
"slimmedElectrons")
261 run2_nanoAOD_106Xv2.toModify(process.egmGsfElectronIDs, physicsObjectSrc =
"slimmedElectrons")
264 for modname
in photon_id_modules_WorkingPoints_nanoAOD.modules:
266 process.photonSequence.insert(process.photonSequence.index(bitmapVIDForPho),process.egmPhotonIDSequence)
267 for modifier
in run2_miniAOD_80XLegacy,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_94X2016,run2_nanoAOD_102Xv1:
268 modifier.toModify(process.photonMVAValueMapProducer, src =
"slimmedPhotonsTo106X")
269 modifier.toModify(process.egmPhotonIDs, physicsObjectSrc =
"slimmedPhotonsTo106X")
272 def nanoAOD_addDeepInfoAK8(process, addDeepBTag, addDeepBoostedJet, addDeepDoubleX, addDeepDoubleXV2, addParticleNet, jecPayload):
273 _btagDiscriminators=[]
275 print(
"Updating process to run DeepCSV btag to AK8 jets")
276 _btagDiscriminators += [
'pfDeepCSVJetTags:probb',
'pfDeepCSVJetTags:probbb']
277 if addDeepBoostedJet:
278 print(
"Updating process to run DeepBoostedJet on datasets before 103X")
280 _btagDiscriminators += pfDeepBoostedJetTagsAll
282 print(
"Updating process to run ParticleNet before it's included in MiniAOD")
284 _btagDiscriminators += pfParticleNetJetTagsAll
286 print(
"Updating process to run DeepDoubleX on datasets before 104X")
287 _btagDiscriminators += [
'pfDeepDoubleBvLJetTags:probHbb', \
288 'pfDeepDoubleCvLJetTags:probHcc', \
289 'pfDeepDoubleCvBJetTags:probHcc', \
290 'pfMassIndependentDeepDoubleBvLJetTags:probHbb',
'pfMassIndependentDeepDoubleCvLJetTags:probHcc',
'pfMassIndependentDeepDoubleCvBJetTags:probHcc']
292 print(
"Updating process to run DeepDoubleXv2 on datasets before 11X")
293 _btagDiscriminators += [
294 'pfMassIndependentDeepDoubleBvLV2JetTags:probHbb',
295 'pfMassIndependentDeepDoubleCvLV2JetTags:probHcc',
296 'pfMassIndependentDeepDoubleCvBV2JetTags:probHcc'
298 if len(_btagDiscriminators)==0:
return process
299 print(
"Will recalculate the following discriminators on AK8 jets: "+
", ".
join(_btagDiscriminators))
302 jetSource = cms.InputTag(
'slimmedJetsAK8'),
303 pvSource = cms.InputTag(
'offlineSlimmedPrimaryVertices'),
304 svSource = cms.InputTag(
'slimmedSecondaryVertices'),
306 jetCorrections = (jecPayload.value(), cms.vstring([
'L1FastJet',
'L2Relative',
'L3Absolute',
'L2L3Residual']),
'None'),
307 btagDiscriminators = _btagDiscriminators,
308 postfix=
'AK8WithDeepInfo',
311 process.jetCorrFactorsAK8.src=
"selectedUpdatedPatJetsAK8WithDeepInfo"
312 process.updatedJetsAK8.jetSource=
"selectedUpdatedPatJetsAK8WithDeepInfo"
315 from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties
import runMetCorAndUncFromMiniAOD
319 fixEE2017Params = {
'userawPt':
True,
'ptThreshold':50.0,
'minEtaThreshold':2.65,
'maxEtaThreshold': 3.139},
320 postfix =
"FixEE2017")
321 process.nanoSequenceCommon.insert(process.nanoSequenceCommon.index(jetSequence),process.fullPatMetSequenceFixEE2017)
325 process.puppiNoLep.useExistingWeights =
True
326 process.puppi.useExistingWeights =
True
327 run2_nanoAOD_106Xv1.toModify(process.puppiNoLep, useExistingWeights =
False)
328 run2_nanoAOD_106Xv1.toModify(process.puppi, useExistingWeights =
False)
330 nanoAOD_addDeepInfo_switch = cms.PSet(
331 nanoAOD_addDeepBTag_switch = cms.untracked.bool(
False),
332 nanoAOD_addDeepFlavourTag_switch = cms.untracked.bool(
False),
334 run2_miniAOD_80XLegacy.toModify(nanoAOD_addDeepInfo_switch, nanoAOD_addDeepBTag_switch = cms.untracked.bool(
True))
335 for modifier
in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016, run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2:
336 modifier.toModify(nanoAOD_addDeepInfo_switch, nanoAOD_addDeepFlavourTag_switch = cms.untracked.bool(
True))
338 addDeepBTag=nanoAOD_addDeepInfo_switch.nanoAOD_addDeepBTag_switch,
339 addDeepFlavour=nanoAOD_addDeepInfo_switch.nanoAOD_addDeepFlavourTag_switch)
340 nanoAOD_addDeepInfoAK8_switch = cms.PSet(
341 nanoAOD_addDeepBTag_switch = cms.untracked.bool(
False),
342 nanoAOD_addDeepBoostedJet_switch = cms.untracked.bool(
False),
343 nanoAOD_addDeepDoubleX_switch = cms.untracked.bool(
False),
344 nanoAOD_addDeepDoubleXV2_switch = cms.untracked.bool(
False),
345 nanoAOD_addParticleNet_switch = cms.untracked.bool(
False),
346 jecPayload = cms.untracked.string(
'AK8PFPuppi')
349 run2_miniAOD_80XLegacy.toModify(nanoAOD_addDeepInfoAK8_switch,
350 nanoAOD_addDeepBTag_switch =
True,
351 jecPayload =
'AK8PFchs')
353 (run2_nanoAOD_94X2016 | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_102Xv1).toModify(
354 nanoAOD_addDeepInfoAK8_switch,
355 nanoAOD_addDeepBoostedJet_switch =
True,
356 nanoAOD_addDeepDoubleX_switch =
True,
357 nanoAOD_addDeepDoubleXV2_switch =
True,
358 nanoAOD_addParticleNet_switch =
True,
361 run2_nanoAOD_106Xv1.toModify(
362 nanoAOD_addDeepInfoAK8_switch,
363 nanoAOD_addDeepDoubleXV2_switch =
True,
364 nanoAOD_addParticleNet_switch =
True,
367 addDeepBTag=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addDeepBTag_switch,
368 addDeepBoostedJet=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addDeepBoostedJet_switch,
369 addDeepDoubleX=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addDeepDoubleX_switch,
370 addDeepDoubleXV2=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addDeepDoubleXV2_switch,
371 addParticleNet=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addParticleNet_switch,
372 jecPayload=nanoAOD_addDeepInfoAK8_switch.jecPayload)
373 (run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94X2016 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_102Xv1 | run2_nanoAOD_106Xv1).toModify(process,
lambda p :
nanoAOD_addTauIds(p))
379 for modifier
in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2:
386 for modifier
in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2:
392 pdgSelection=
"?(abs(pdgId) == 11|| abs(pdgId)==13 || abs(pdgId)==15 ||abs(pdgId)== 12 || abs(pdgId)== 14 || abs(pdgId)== 16|| abs(pdgId)== 24|| pdgId== 23)"
394 ptPrecision=
"{}?{}:{}".
format(pdgSelection, CandVars.pt.precision.value(),genParticleTable.variables.pt.precision.value())
395 process.genParticleTable.variables.pt.precision=cms.string(ptPrecision)
396 phiPrecision=
"{} ? {} : {}".
format(pdgSelection, CandVars.phi.precision.value(), genParticleTable.variables.phi.precision.value())
397 process.genParticleTable.variables.phi.precision=cms.string(phiPrecision)
398 etaPrecision=
"{} ? {} : {}".
format(pdgSelection, CandVars.eta.precision.value(), genParticleTable.variables.eta.precision.value())
399 process.genParticleTable.variables.eta.precision=cms.string(etaPrecision)
403 _80x_sequence = nanoSequenceCommon.copy()
405 _80x_sequence.remove(isoTrackTables)
406 _80x_sequence.remove(isoTrackSequence)
408 _80x_sequence.insert(_80x_sequence.index(jetSequence), extraFlagsProducers)
409 _80x_sequence.insert(_80x_sequence.index(simpleCleanerTable)+1, extraFlagsTable)
411 run2_miniAOD_80XLegacy.toReplaceWith( nanoSequenceCommon, _80x_sequence)
413 _102x_sequence = nanoSequenceCommon.copy()
415 _102x_sequence.insert(_102x_sequence.index(jetSequence),extraFlagsProducers102x)
416 _102x_sequence.insert(_102x_sequence.index(simpleCleanerTable)+1,extraFlagsTable)
418 for modifier
in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2, run2_nanoAOD_102Xv1:
419 modifier.toReplaceWith(nanoSequenceCommon, _102x_sequence)