Skip to content

Commit

Permalink
Merge pull request cms-sw#25 from cms-nanoAOD/eras
Browse files Browse the repository at this point in the history
Eras
  • Loading branch information
gpetruc authored Oct 3, 2017
2 parents 54ccc00 + 58986b1 commit 794b16f
Show file tree
Hide file tree
Showing 10 changed files with 74 additions and 29 deletions.
1 change: 1 addition & 0 deletions Configuration/Applications/python/cmsDriverOptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ def OptionsFromItems(items):
"HARVESTING":"RECO",
"ALCAHARVEST":"RECO",
"PAT":"RECO",
"NANO":"PAT",
"PATGEN":"GEN"}

trimmedEvtType=options.evt_type.split('/')[-1]
Expand Down
3 changes: 3 additions & 0 deletions Configuration/Eras/python/Modifier_run2_nanoAOD_92X_cff.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import FWCore.ParameterSet.Config as cms

run2_nanoAOD_92X = cms.Modifier()
2 changes: 1 addition & 1 deletion Configuration/StandardSequences/python/Eras.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ def __init__(self):
'phase2_hgcal', 'phase2_muon', 'phase2_timing',
'phase2_timing_layer','phase2_hcal',
'trackingLowPU', 'trackingPhase1', 'trackingPhase1QuadProp', 'ctpps_2016', 'trackingPhase2PU140',
'tracker_apv_vfp30_2016', 'run2_miniAOD_80XLegacy',
'tracker_apv_vfp30_2016', 'run2_miniAOD_80XLegacy', 'run2_nanoAOD_92X',
'hcalHardcodeConditions', 'hcalSkipPacker']
internalUseModChains = ['run2_2017_noTrackingModifier']

Expand Down
12 changes: 0 additions & 12 deletions PhysicsTools/NanoAOD/python/adaptFrom92X_cff.py

This file was deleted.

26 changes: 21 additions & 5 deletions PhysicsTools/NanoAOD/python/electrons_cff.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import FWCore.ParameterSet.Config as cms
from Configuration.Eras.Modifier_run2_miniAOD_80XLegacy_cff import run2_miniAOD_80XLegacy
from Configuration.Eras.Modifier_run2_nanoAOD_92X_cff import run2_nanoAOD_92X
from PhysicsTools.NanoAOD.common_cff import *
from math import ceil,log

Expand Down Expand Up @@ -58,10 +60,6 @@
srcCorr = cms.InputTag("calibratedPatElectrons"),
)

finalElectrons = cms.EDFilter("PATElectronRefSelector",
src = cms.InputTag("slimmedElectronsWithUserData"),
cut = cms.string("pt > 5 ")
)

slimmedElectronsWithUserData = cms.EDProducer("PATElectronUserDataEmbedder",
src = cms.InputTag("slimmedElectrons"),
Expand Down Expand Up @@ -95,6 +93,19 @@
),
)

# this below is used only in some eras
slimmedElectronsWithDZ = cms.EDProducer("PATElectronUpdater",
src = cms.InputTag("slimmedElectronsWithUserData"),
vertices = cms.InputTag("offlineSlimmedPrimaryVertices")
)

finalElectrons = cms.EDFilter("PATElectronRefSelector",
src = cms.InputTag("slimmedElectronsWithUserData"),
cut = cms.string("pt > 5 ")
)
run2_miniAOD_80XLegacy.toModify(finalElectrons, src = "slimmedElectronsWithDZ")
run2_nanoAOD_92X.toModify(finalElectrons, src = "slimmedElectronsWithDZ")

electronMVATTH= cms.EDProducer("EleBaseMVAValueMapProducer",
src = cms.InputTag("linkedObjects","electrons"),
weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/el_BDTG.weights.xml"),
Expand Down Expand Up @@ -130,7 +141,7 @@
#ptErr = Var("gsfTrack().ptError()",float,doc="pt error of the GSF track",precision=6),
energyErr = Var("p4Error('P4_COMBINATION')*userFloat('eCorr')",float,doc="energy error of the cluster-track combination",precision=6),
eCorr = Var("userFloat('eCorr')",float,doc="ratio of the calibrated energy/miniaod energy"),
dz = Var("abs(dB('PVDZ'))",float,doc="dz (with sign) wrt first PV, in cm",precision=10),
dz = Var("dB('PVDZ')",float,doc="dz (with sign) wrt first PV, in cm",precision=10),
dzErr = Var("abs(edB('PVDZ'))",float,doc="dz uncertainty, in cm",precision=6),
dxy = Var("dB('PV2D')",float,doc="dxy (with sign) wrt first PV, in cm",precision=10),
dxyErr = Var("edB('PV2D')",float,doc="dxy uncertainty, in cm",precision=6),
Expand Down Expand Up @@ -186,3 +197,8 @@
electronSequence = cms.Sequence(egmGsfElectronIDSequence + bitmapVIDForEle + isoForEle + ptRatioRelForEle + calibratedPatElectrons + energyCorrForEle + slimmedElectronsWithUserData + finalElectrons)
electronTables = cms.Sequence (electronMVATTH + electronTable)
electronMC = cms.Sequence(electronsMCMatchForTable + electronMCTable)

_withDZ_sequence = electronSequence.copy()
_withDZ_sequence.replace(finalElectrons, slimmedElectronsWithDZ+finalElectrons)
run2_nanoAOD_92X.toReplaceWith(electronSequence, _withDZ_sequence)
run2_miniAOD_80XLegacy.toReplaceWith(electronSequence, _withDZ_sequence)
10 changes: 10 additions & 0 deletions PhysicsTools/NanoAOD/python/jets_cff.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import FWCore.ParameterSet.Config as cms
from Configuration.Eras.Modifier_run2_miniAOD_80XLegacy_cff import run2_miniAOD_80XLegacy

from PhysicsTools.NanoAOD.common_cff import *


Expand Down Expand Up @@ -102,6 +104,8 @@
#jets are not as precise as muons
jetTable.variables.pt.precision=10

### Era dependent customization
run2_miniAOD_80XLegacy.toModify( jetTable.variables.qgl, expr="-1" )

bjetMVA= cms.EDProducer("BJetEnergyRegressionMVA",
src = cms.InputTag("linkedObjects","jets"),
Expand Down Expand Up @@ -191,6 +195,12 @@
# rawFactor = Var("1.-jecFactor('Uncorrected')",float,doc="1 - Factor to get back to raw pT",precision=6),
)
)
### Era dependent customization
run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.mpruned, expr = cms.string("userFloat(\'ak8PFJetsCHSPrunedMass\')"),)
run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.msoftdrop, expr = cms.string("userFloat(\'ak8PFJetsCHSSoftDropMass\')"),)
run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.tau1, expr = cms.string("userFloat(\'NjettinessAK8:tau1\')"),)
run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.tau2, expr = cms.string("userFloat(\'NjettinessAK8:tau2\')"),)
run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.tau3, expr = cms.string("userFloat(\'NjettinessAK8:tau3\')"),)

subJetTable = cms.EDProducer("SimpleCandidateFlatTableProducer",
src = cms.InputTag("slimmedJetsAK8PFPuppiSoftDropPacked","SubJets"),
Expand Down
15 changes: 14 additions & 1 deletion PhysicsTools/NanoAOD/python/muons_cff.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import FWCore.ParameterSet.Config as cms
from Configuration.Eras.Modifier_run2_miniAOD_80XLegacy_cff import run2_miniAOD_80XLegacy
from Configuration.Eras.Modifier_run2_nanoAOD_92X_cff import run2_nanoAOD_92X
from PhysicsTools.NanoAOD.common_cff import *

isoForMu = cms.EDProducer("MuonIsoValueMapProducer",
Expand Down Expand Up @@ -27,11 +29,18 @@
jetForLepJetVar = cms.InputTag("ptRatioRelForMu:jetForLepJetVar") # warning: Ptr is null if no match is found
),
)
# this below is used only in some eras
slimmedMuonsWithDZ = cms.EDProducer("PATMuonUpdater",
src = cms.InputTag("slimmedMuonsWithUserData"),
vertices = cms.InputTag("offlineSlimmedPrimaryVertices")
)

finalMuons = cms.EDFilter("PATMuonRefSelector",
src = cms.InputTag("slimmedMuonsWithUserData"),
cut = cms.string("pt > 3 && track.isNonnull && isLooseMuon")
)
run2_miniAOD_80XLegacy.toModify(finalMuons, src = "slimmedMuonsWithDZ")
run2_nanoAOD_92X.toModify(finalMuons, src = "slimmedMuonsWithDZ")

muonMVATTH= cms.EDProducer("MuonBaseMVAValueMapProducer",
src = cms.InputTag("linkedObjects","muons"),
Expand Down Expand Up @@ -64,7 +73,7 @@
extension = cms.bool(False), # this is the main table for the muons
variables = cms.PSet(CandVars,
ptErr = Var("bestTrack().ptError()", float, doc = "ptError of the muon track", precision=6),
dz = Var("abs(dB('PVDZ'))",float,doc="dz (with sign) wrt first PV, in cm",precision=10),
dz = Var("dB('PVDZ')",float,doc="dz (with sign) wrt first PV, in cm",precision=10),
dzErr = Var("abs(edB('PVDZ'))",float,doc="dz uncertainty, in cm",precision=6),
dxy = Var("dB('PV2D')",float,doc="dxy (with sign) wrt first PV, in cm",precision=10),
dxyErr = Var("edB('PV2D')",float,doc="dxy uncertainty, in cm",precision=6),
Expand Down Expand Up @@ -117,3 +126,7 @@
muonMC = cms.Sequence(muonsMCMatchForTable + muonMCTable)
muonTables = cms.Sequence(muonMVATTH + muonTable + muonIDTable)

_withDZ_sequence = muonSequence.copy()
_withDZ_sequence.replace(finalMuons, slimmedMuonsWithDZ+finalMuons)
run2_nanoAOD_92X.toReplaceWith(muonSequence, _withDZ_sequence)
run2_miniAOD_80XLegacy.toReplaceWith(muonSequence, _withDZ_sequence)
19 changes: 13 additions & 6 deletions PhysicsTools/NanoAOD/python/nano_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,12 +70,8 @@

nanoSequenceMC = cms.Sequence(genParticleSequence + nanoSequence + jetMC + muonMC + electronMC + photonMC + tauMC + metMC + globalTablesMC + genWeightsTable + genParticleTables + lheInfoTable)


def nanoAOD_customizeCommon(process):
## FIXME: make era-dependent?
if not hasattr(process, 'miniAOD'):
# assume we're reading old miniAOD for the moment
process.load("PhysicsTools.NanoAOD.adaptFrom92X_cff")
process.nanoSequence.insert(0, process.adapt_nano)
return process

def nanoAOD_customizeData(process):
Expand All @@ -86,7 +82,7 @@ def nanoAOD_customizeData(process):

def nanoAOD_customizeMC(process):
process = nanoAOD_customizeCommon(process)
## FIXME: THIS SHOULD PROBABLY GO INTO Services_cff
## FIXME: WILL NO LONGER NEED RANDOM SEEDS WHEN DETERMINISTIC SMEARING WILL BE IMPLEMENTED
if not hasattr(process,'RandomNumberGeneratorService'):
process.RandomNumberGeneratorService = cms.Service("RandomNumberGeneratorService")
for X in 'calibratedPatElectrons','calibratedPatPhotons':
Expand All @@ -96,3 +92,14 @@ def nanoAOD_customizeMC(process):
process.calibratedPatElectrons.isMC = cms.bool(True)
process.calibratedPatPhotons.isMC = cms.bool(True)
return process

### Era dependent customization
from Configuration.Eras.Modifier_run2_miniAOD_80XLegacy_cff import run2_miniAOD_80XLegacy
#remove stuff
_80x_sequence = nanoSequence.copy()
_80x_sequence.remove(isoTrackTable)
_80x_sequence.remove(isoTrackSequence)
run2_miniAOD_80XLegacy.toReplaceWith( nanoSequence, _80x_sequence)



7 changes: 7 additions & 0 deletions PhysicsTools/NanoAOD/python/triggerObjects_cff.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
import FWCore.ParameterSet.Config as cms
from Configuration.Eras.Modifier_run2_miniAOD_80XLegacy_cff import run2_miniAOD_80XLegacy

unpackedPatTrigger = cms.EDProducer("PATTriggerObjectStandAloneUnpacker",
patTriggerObjectsStandAlone = cms.InputTag('slimmedPatTrigger'),
triggerResults = cms.InputTag('TriggerResults::HLT'),
unpackFilterLabels = cms.bool(True)
)
# ERA-dependent configuration
run2_miniAOD_80XLegacy.toModify(
unpackedPatTrigger,
patTriggerObjectsStandAlone = "selectedPatTrigger",
unpackFilterLabels = False
)

triggerObjectTable = cms.EDProducer("TriggerObjectTableProducer",
name= cms.string("TrigObj"),
Expand Down
8 changes: 4 additions & 4 deletions PhysicsTools/NanoAOD/test/nano_cfg.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import FWCore.ParameterSet.Config as cms
process = cms.Process('NANO')
from Configuration.StandardSequences.Eras import eras
process = cms.Process('NANO',eras.Run2_2017,eras.run2_nanoAOD_92X)

process.load("FWCore.MessageLogger.MessageLogger_cfi")

process.load("Configuration.StandardSequences.GeometryDB_cff")
process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
process.load('Configuration.StandardSequences.Services_cff')
from Configuration.AlCa.autoCond import autoCond
process.GlobalTag.globaltag = autoCond['run2_mc']
process.GlobalTag.globaltag = autoCond['phase1_2017_realistic']

process.options = cms.untracked.PSet( wantSummary = cms.untracked.bool(True) )
process.MessageLogger.cerr.FwkReport.reportEvery = 100
Expand All @@ -24,7 +25,6 @@
]

process.load("PhysicsTools.NanoAOD.nano_cff")
process.load("PhysicsTools.NanoAOD.adaptFrom92X_cff")

process.RandomNumberGeneratorService = cms.Service("RandomNumberGeneratorService",
calibratedPatElectrons = cms.PSet(initialSeed = cms.untracked.uint32(81),
Expand All @@ -34,7 +34,7 @@
engineName = cms.untracked.string('TRandom3'),
),
)
process.nanoPath = cms.Path(process.adapt_nano + process.nanoSequenceMC)
process.nanoPath = cms.Path(process.nanoSequenceMC)
process.calibratedPatElectrons.isMC = cms.bool(True)
process.calibratedPatPhotons.isMC = cms.bool(True)
#for data:
Expand Down

0 comments on commit 794b16f

Please sign in to comment.