def setup_jets_(process, isData, bTagDiscriminators): from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox jetToolbox(process, 'ak4', 'ak4CHSJetSequence', 'out', PUMethod='CHS', runOnMC=not isData, miniAOD=True, addPUJetID=False, bTagDiscriminators=bTagDiscriminators + ['pfSimpleSecondaryVertexHighEffBJetTags']) process.softPFElectronsTagInfosAK4PFCHS.electrons = cms.InputTag('slimmedElectrons') process.softPFMuonsTagInfosAK4PFCHS.muons = cms.InputTag('slimmedMuons') # b-tagging information. From # https://github.com/cms-sw/cmssw/blob/CMSSW_7_4_X/PhysicsTools/PatAlgos/python/slimming/miniAOD_tools.py#L130 process.patJetsAK4PFCHS.userData.userFunctions = cms.vstring( '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).p4.M):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).numberOfSourceCandidatePtrs):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").flightDistance(0).value):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").flightDistance(0).significance):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).p4.x):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).p4.y):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).p4.z):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).vertex.x):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).vertex.y):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).vertex.z):(0)', ) process.patJetsAK4PFCHS.userData.userFunctionLabels = cms.vstring('vtxMass','vtxNtracks','vtx3DVal','vtx3DSig','vtxPx','vtxPy','vtxPz','vtxPosX','vtxPosY','vtxPosZ') process.patJetsAK4PFCHS.tagInfoSources = cms.VInputTag(cms.InputTag("pfSecondaryVertexTagInfosAK4PFCHS")) process.patJetsAK4PFCHS.addTagInfos = cms.bool(True) # Pile-up jet id process.load('RecoJets.JetProducers.PileupJetID_cfi') process.pileupJetId.applyJec = False process.pileupJetId.vertexes = cms.InputTag('offlineSlimmedPrimaryVertices') process.patJetsAK4PFCHS.userData.userFloats.src = [ cms.InputTag("pileupJetId:fullDiscriminant"), ]
def produceJets(process, isData): ''' JetToolbox twiki: https://twiki.cern.ch/twiki/bin/viewauth/CMS/JetToolbox Using the QGTagger with Jet Toolbox: https://twiki.cern.ch/twiki/bin/viewauth/CMS/JetToolbox#QGTagger QuarkGluonLikelihood twiki: https://twiki.cern.ch/twiki/bin/view/CMS/QuarkGluonLikelihood More info: https://twiki.cern.ch/twiki/bin/viewauth/CMS/QGDataBaseVersion ''' process.load("Configuration.EventContent.EventContent_cff") process.load("Configuration.StandardSequences.GeometryRecoDB_cff") process.load('Configuration.StandardSequences.MagneticField_38T_cff') process.load('Configuration.StandardSequences.Services_cff') JEC = ['L1FastJet', 'L2Relative', 'L3Absolute'] if isData: JEC += ['L2L3Residual'] from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox jetToolbox(process, 'ak4', 'ak4JetSubs', 'out', addQGTagger=True, addPUJetID=True, JETCorrLevels=JEC, bTagDiscriminators=[ 'pfCombinedInclusiveSecondaryVertexV2BJetTags', 'pfCombinedMVAV2BJetTags', 'pfCombinedCvsBJetTags', 'pfCombinedCvsLJetTags' ], updateCollection='cleanedPatJets', JETCorrPayload="AK4PFchs", postFix='') # Small fix required to add the variables ptD, axis2, mult. See: # https://hypernews.cern.ch/HyperNews/CMS/get/jet-algorithms/418/1.html getattr(process, 'updatedPatJetsAK4PFCHS').userData.userFloats.src += [ 'QGTagger' + 'AK4PFCHS' + ':ptD' ] getattr(process, 'updatedPatJetsAK4PFCHS').userData.userFloats.src += [ 'QGTagger' + 'AK4PFCHS' + ':axis2' ] getattr(process, 'updatedPatJetsAK4PFCHS').userData.userInts.src += [ 'QGTagger' + 'AK4PFCHS' + ':mult' ] return
def add_ak4_chs_jets_(process, isData, bTagDiscriminators): from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox if verbosity: jetToolbox(process, 'ak4', 'ak4CHSJetSequence', 'out', PUMethod='CHS', runOnMC=not isData, miniAOD=True, addPUJetID=False, bTagDiscriminators=bTagDiscriminators) else: with StdStreamSilenter(): jetToolbox(process, 'ak4', 'ak4CHSJetSequence', 'out', PUMethod='CHS', runOnMC=not isData, miniAOD=True, addPUJetID=False, bTagDiscriminators=bTagDiscriminators) if (hasattr(process, 'softPFElectronsTagInfosAK4PFCHS')): process.softPFElectronsTagInfosAK4PFCHS.electrons = cms.InputTag('slimmedElectrons') if (hasattr(process, 'softPFMuonsTagInfosAK4PFCHS')): process.softPFMuonsTagInfosAK4PFCHS.muons = cms.InputTag('slimmedMuons')
def jettoolbox_settings( process , RunOnMC ): process.load('CommonTools/PileupAlgos/Puppi_cff') process.puppi.candName = cms.InputTag('packedPFCandidates') process.puppi.vertexName = cms.InputTag('offlineSlimmedPrimaryVertices') process.puppiOnTheFly = process.puppi.clone() process.puppiOnTheFly.useExistingWeights = True print "Add AK4 Jets" jetToolbox( process, 'ak4', 'jetToolBox_ak4', 'edmOut', runOnMC = RunOnMC , addQGTagger = True, bTagDiscriminators = listBtagDiscriminators , Cut = '' ) print "Add AK8 Jets, soft drop" jetToolbox( process, 'ak8', 'jetToolBox_ak8', 'edmOut', runOnMC = RunOnMC, addSoftDropSubjets = True, addTrimming = True, rFiltTrim = 0.1, addPruning = True, addFiltering = True, addSoftDrop = True, addNsub = True, GetJetMCFlavour = True, GetSubjetMCFlavour = True, bTagDiscriminators = listBtagDiscriminators , Cut = '' ) print "Add AK8 Jets, top tag" jetToolbox( process, 'ca8', 'jetToolBox_ak8_toptag', 'edmOut', runOnMC = RunOnMC , addMassDrop = True, addCMSTopTagger = True, GetJetMCFlavour = True, GetSubjetMCFlavour = True, bTagDiscriminators = listBtagDiscriminators , Cut = '' ) print "Add ak8 jets, puppi" jetToolbox( process, 'ak8', 'jetToolBox_ak8_puppi', 'edmOut', runOnMC = RunOnMC , PUMethod = 'Puppi', addTrimming = True, addPruning = True, addFiltering = True, addSoftDrop = True, addSoftDropSubjets = True, addNsub = True, GetJetMCFlavour = True, GetSubjetMCFlavour = True, bTagDiscriminators = listBtagDiscriminators , Cut = '' )
def produceJets(process, isData): ''' JetToolbox twiki: https://twiki.cern.ch/twiki/bin/viewauth/CMS/JetToolbox Using the QGTagger with Jet Toolbox: https://twiki.cern.ch/twiki/bin/viewauth/CMS/JetToolbox#QGTagger QuarkGluonLikelihood twiki: https://twiki.cern.ch/twiki/bin/view/CMS/QuarkGluonLikelihood More info: https://twiki.cern.ch/twiki/bin/viewauth/CMS/QGDataBaseVersion ''' process.load("Configuration.EventContent.EventContent_cff") process.load("Configuration.StandardSequences.GeometryRecoDB_cff") process.load('Configuration.StandardSequences.MagneticField_38T_cff') process.load('Configuration.StandardSequences.Services_cff') JEC = ['L1FastJet','L2Relative','L3Absolute'] if isData: JEC += ['L2L3Residual'] from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox jetToolbox( process, 'ak4', 'ak4JetSubs', 'out', addQGTagger=True, addPUJetID=True, JETCorrLevels = JEC, bTagDiscriminators = ['pfCombinedInclusiveSecondaryVertexV2BJetTags', 'pfCombinedMVAV2BJetTags','pfCombinedCvsBJetTags','pfCombinedCvsLJetTags'], updateCollection='cleanedPatJets', JETCorrPayload="AK4PFchs", postFix='') # Small fix required to add the variables ptD, axis2, mult. See: # https://hypernews.cern.ch/HyperNews/CMS/get/jet-algorithms/418/1.html getattr( process, 'updatedPatJetsAK4PFCHS').userData.userFloats.src += ['QGTagger'+'AK4PFCHS'+':ptD'] getattr( process, 'updatedPatJetsAK4PFCHS').userData.userFloats.src += ['QGTagger'+'AK4PFCHS'+':axis2'] getattr( process, 'updatedPatJetsAK4PFCHS').userData.userInts.src += ['QGTagger'+'AK4PFCHS'+':mult'] return
"PoolSource", fileNames=cms.untracked.vstring( #"file:mini_test.root" "/store/mc/RunIIFall17MiniAODv2/TTJets_SingleLeptFromT_TuneCP5_13TeV-madgraphMLM-pythia8/MINIAODSIM/PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/910000/D842F996-2149-E811-AF09-0242AC1C0502.root" )) process.JTBout = cms.OutputModule( "PoolOutputModule", fileName=cms.untracked.string('mini_JTB_test.root'), outputCommands=cms.untracked.vstring("keep *")) process.endpath = cms.EndPath(process.JTBout) from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox jetToolbox( process, 'ak12', 'jetSequence', 'JTBout', miniAOD=True, PUMethod='Puppi', JETCorrPayload='AK8PFPuppi', runOnMC=True, Cut='pt > 50.0 && abs(eta) < 2.4', bTagDiscriminators=['pfBoostedDoubleSecondaryVertexAK8BJetTags'], addSoftDrop=True, addSoftDropSubjets=True, addPruning=True, addNsub=True, addEnergyCorrFunc=True, )
# |---- jetToolBox: Creating selectedPatJetsAK8PFCHS collection. # vector<pat::Jet> "selectedPatJetsAK8PFCHS" "" "Ana" # vector<pat::Jet> "selectedPatJetsAK8PFCHSSoftDropPacked" "" "Ana" # vector<pat::Jet> "selectedPatJetsAK8PFCHSSoftDropPacked" "SubJets" "Ana" # vector<reco::GenJet> "selectedPatJetsAK8PFCHS" "genJets" "Ana" # vector<reco::PFCandidate> "selectedPatJetsAK8PFCHS" "pfCandidates" "Ana" jetToolbox( process, 'ak8', 'ak8JetSubs', 'out', runOnMC = isMC, PUMethod='CHS', # updateCollection='slimmedJetsAK8', # can't run groomers on this yet # JETCorrPayload='AK8PFchs', # needed for update collection addSoftDropSubjets = True, addTrimming = True, rFiltTrim=0.2, ptFrac=0.05, addPruning = True, addFiltering = True, addSoftDrop = True, addNsub = True, bTagInfos = listBTagInfos, bTagDiscriminators = listBtagDiscriminatorsAK8, addCMSTopTagger = False, Cut = ak8Cut , addNsubSubjets = True, subjetMaxTau = 3 ) # |---- jetToolBox: JETTOOLBOX RUNNING ON MiniAOD FOR AK8 JETS USING Puppi # |---- jetToolBox: Applying this corrections: ('AK8PFPuppi', ['L2Relative', 'L3Absolute'], 'None') # |---- jetToolBox: Running ak8PFJetsPuppiSoftDropMass, selectedPatJetsAK8PFPuppiSoftDropPacked, selectedPatJetsAK8PFPuppiSoftDropSubjets, ak8PFJetsPuppiPrunedMass, ak8PFJetsPuppiTrimmedMass, ak8PFJetsPuppiFilteredMass, NjettinessAK8Puppi, NsubjettinessAK8PFPuppiSoftDropSubjets. # |---- jetToolBox: Creating selectedPatJetsAK8PFPuppi collection. # vector<pat::Jet> "selectedPatJetsAK8PFPuppi" "" "Ana"
#Define Jet Tool Box Stuff listBtagDiscriminatorsAK4 = [ 'pfJetProbabilityBJetTags', 'pfCombinedInclusiveSecondaryVertexV2BJetTags', 'pfCombinedMVAV2BJetTags', 'pfCombinedCvsLJetTags', 'pfCombinedCvsBJetTags', ] from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox jetToolbox(process, 'ak8', 'ak8JetSubs', "out", PUMethod='CHS', bTagDiscriminators=listBtagDiscriminatorsAK4, addSoftDrop=True, addNsub=True, addNsubSubjets=True, miniAOD=False) ### For example #Add PAT tasks for jet Toolbox to execution schedule process.schedule.associate(process.patTask) from PhysicsTools.PatAlgos.tools.helpers import associatePatAlgosToolsTask associatePatAlgosToolsTask(process) #miniAOD_customize stuff process.patTaus.isoDeposits = cms.PSet() process.selectedPatTaus.cut = cms.string( "pt > 18. && tauID('decayModeFindingNewDMs')> 0.5")
#HERE WE RUN A MODULE FROM SAM HARPER WHICH INSERTS HEEP CUT INFO INTO THE PAT ELECTRON USER DATA #we setup the HEEP ID V7.0 and enable VID via the following function #and then add it to a new collection of pat::Electrons #there is the option to call the new collection "slimmedElectrons" (useStdName=True) #otherwise it calls them "heepElectrons" #it creates a sequence "process.heepSequence" which we add to our path from HEEP.VID.tools import addHEEPV70ElesMiniAOD addHEEPV70ElesMiniAOD(process, useStdName=True) from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox jetToolbox(process, 'ak8', 'jetSequence', 'out', PUMethod='Puppi', miniAOD=True, runOnMC=options.isMC, addSoftDrop=True, addNsub=True) process.options.allowUnscheduled = cms.untracked.bool(True) ##this is our example analysis module reading the results, you will have your own module #process.heepIdExample = cms.EDAnalyzer("HEEPV70PATExample", # eles=cms.InputTag("slimmedElectrons"), # ) #process.p = cms.Path( # process.heepSequence* # process.heepIdExample) #our analysing example module, replace with your module #
# Kappa jet processing process.kappaTuple.Jets.minPt = 5.0 process.kappaTuple.Jets.taggers = cms.vstring() # containers for objects to process kappa_jets = {} # algoname: kappa jet config # GenJets if not data: process.kappaTuple.active += cms.vstring('LV') #Run JetToolbox to get jet collections: https://twiki.cern.ch/twiki/bin/viewauth/CMS/JetToolbox from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox jetSequence = 'sequence' jetToolbox( process, 'ak4', jetSequence+'ak4CHS', 'out', miniAOD=True, runOnMC= not data, JETCorrPayload = "None", PUMethod='CHS', addPruning=False, addSoftDrop=False , addPrunedSubjets=False, addNsub=False, maxTau=6, addTrimming=False, addFiltering=False, addNsubSubjets=False, addPUJetID=True) process.path *= process.sequenceak4CHS process.path *= process.AK4PFCHSpileupJetIdCalculator*process.AK4PFCHSpileupJetIdEvaluator jetToolbox( process, 'ak4', jetSequence+'ak4Puppi', 'out', miniAOD=True, runOnMC= not data, JETCorrPayload = "None", PUMethod='Puppi', addPruning=False, addSoftDrop=False , addPrunedSubjets=False, addNsub=False, maxTau=6, addTrimming=False, addFiltering=False, addNsubSubjets=False) process.path *= process.sequenceak4Puppi jetToolbox( process, 'ak4', jetSequence+'ak4', 'out', miniAOD=True, runOnMC= not data, JETCorrPayload = "None", PUMethod='None', addPruning=False, addSoftDrop=False , addPrunedSubjets=False, addNsub=False, maxTau=6, addTrimming=False, addFiltering=False, addNsubSubjets=False) process.path *= process.sequenceak4 jetToolbox( process, 'ak8', jetSequence+'ak8CHS', 'out', miniAOD=True, runOnMC= not data, JETCorrPayload = "None", PUMethod='CHS', addPruning=False, addSoftDrop=False , addPrunedSubjets=False, addNsub=False, maxTau=6, addTrimming=False, addFiltering=False, addNsubSubjets=False) process.path *= process.sequenceak8CHS jetToolbox( process, 'ak8', jetSequence+'ak8Puppi', 'out', miniAOD=True, runOnMC= not data, JETCorrPayload = "None", PUMethod='Puppi', addPruning=False, addSoftDrop=False , addPrunedSubjets=False, addNsub=False, maxTau=6, addTrimming=False, addFiltering=False, addNsubSubjets=False) process.path *= process.sequenceak8Puppi jetToolbox( process, 'ak8', jetSequence+'ak8', 'out', miniAOD=True, runOnMC= not data, JETCorrPayload = "None", PUMethod='None', addPruning=False, addSoftDrop=False , addPrunedSubjets=False, addNsub=False, maxTau=6, addTrimming=False, addFiltering=False, addNsubSubjets=False) process.path *= process.sequenceak8 from Kappa.Skimming.KPatJets_miniAOD_cff import setup_PatJets patJets = setup_PatJets(process, data) # create Jet variants
'keep *GenEventInfoProduct*_*_*_*', # pT-hat information "keep *_packedGenParticles_*_*", # GN particle collection "keep *_packedPFCandidates_*_*", # PF particle collection ), SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring("p") ) ) ## Add jet collections using the JetToolbox: from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox jetToolbox(process, 'ak4', 'jetSequence', 'out', # Required # Optional: PUMethod='CHS', miniAOD=True, addTrimming=True, addPruning=True, addSoftDrop=True, addFiltering=True, addMassDrop=True, ) jetToolbox(process, 'ak8', 'jetSequence', 'out', # Required # Optional: PUMethod='CHS', miniAOD=True, addTrimming=True, addPruning=True, # addSoftDrop=True, # addFiltering=True, # addMassDrop=True, addNsub=True, maxTau=4,
# newPFCollection=True, # nameNewPFCollection='pfCandidatesNoEle', # addSoftDropSubjets = True, # addSoftDrop = True, # addNsub = True, # bTagDiscriminators = ['pfCombinedInclusiveSecondaryVertexV2BJetTags'], # addCMSTopTagger = False, # postFix="NoLep") # Keep this behind the cleaned version for now, otherwise everything will be lepton cleaned jetToolbox(process, 'ak8', 'ak8JetSubs', 'out', runOnMC=not options.isData, PUMethod='Puppi', addSoftDropSubjets=True, addSoftDrop=True, addNsub=True, bTagDiscriminators=['pfCombinedInclusiveSecondaryVertexV2BJetTags'], addCMSTopTagger=False) ############################################################################################################################### process.load("TopTagger.TopTagger.SHOTProducer_cfi") process.SHOTProducer.ak4JetSrc = jetTag process.SHOTProducer.ak8JetSrc = cms.InputTag( 'packedPatJetsAK8PFPuppiSoftDrop') ###############################################################################################################################
process.load("Configuration.EventContent.EventContent_cff") process.load("Configuration.StandardSequences.GeometryRecoDB_cff") process.load('Configuration.StandardSequences.MagneticField_38T_cff') process.load('Configuration.StandardSequences.Services_cff') process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_condDBv2_cff') process.GlobalTag.globaltag = 'MCRUN2_74_V7' process.load('FWCore.MessageLogger.MessageLogger_cfi') process.MessageLogger.cerr.FwkReport.reportEvery = 10 process.MessageLogger.suppressWarning = cms.untracked.vstring('ecalLaserCorrFilter','manystripclus53X','toomanystripclus53X') process.options = cms.untracked.PSet( wantSummary = cms.untracked.bool(True) ) process.options.allowUnscheduled = cms.untracked.bool(True) from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox jetToolbox( process, 'ak8', 'ak8JetSubs', 'out', PUMethod='Puppi', addPruning=True, addSoftDrop=True , addPrunedSubjets=True, addSoftDropSubjets=True, addNsub=True, maxTau=6, addTrimming=True, addFiltering=True ) #, JETCorrPayload='AK8PF', subJETCorrLevels=['L2Relative', 'L3Absoulte'] ) #, Cut='pt > 100 && abs(eta) < 2.4' ) jetToolbox( process, 'ak8', 'ak8JetSubs', 'out', PUMethod='SK', addPruning=True, addSoftDrop=True , addPrunedSubjets=True, addSoftDropSubjets=True, addNsub=True, maxTau=6, addTrimming=True, addFiltering=True, JETCorrLevels=['L1FastJet', 'L2Relative'] ) jetToolbox( process, 'ak8', 'ak8JetSubs', 'out', PUMethod='CS', addPruning=True, addSoftDrop=True , addPrunedSubjets=True, addSoftDropSubjets=True, addNsub=True, maxTau=6, addTrimming=True, addFiltering=True ) jetToolbox( process, 'ak8', 'ak8JetSubs', 'out', addPruning=True, addSoftDrop=True , addPrunedSubjets=True, addSoftDropSubjets=True, addNsub=True, maxTau=6, addTrimming=True, addFiltering=True, JETCorrPayload='AK3PFchs', subJETCorrPayload='AK8PFchs', JETCorrLevels=['L1FastJet', 'L2Relative'] ) #jetToolbox( process, 'ca8', 'ca8JetSubs', 'out', PUMethod='Puppi', addCMSTopTagger=True, addMassDrop=True, addSoftDrop=True ) #jetToolbox( process, 'ca8', 'ca8JetSubs', 'out', PUMethod='SK', addCMSTopTagger=True, addMassDrop=True, addSoftDrop=True ) #jetToolbox( process, 'ca8', 'ca8JetSubs', 'out', PUMethod='CS', addCMSTopTagger=True, addMassDrop=True, addSoftDrop=True ) #jetToolbox( process, 'ca8', 'ca8JetSubs', 'out', addCMSTopTagger=True, addMassDrop=True, addSoftDrop=True ) #jetToolbox( process, 'ca12', 'ca12JetSubs', 'out', PUMethod='Puppi', addHEPTopTagger=True, addSoftDrop=True ) #jetToolbox( process, 'ca12', 'ca12JetSubs', 'out', PUMethod='SK', addHEPTopTagger=True, addSoftDrop=True ) #jetToolbox( process, 'ca12', 'ca12JetSubs', 'out', PUMethod='CS', addHEPTopTagger=True, addSoftDrop=True ) #jetToolbox( process, 'ca12', 'ca12JetSubs', 'out', addHEPTopTagger=True, addSoftDrop=True ) #jetToolbox( process, 'ak8', 'ak8JetSubs', 'out' , addPruning=True, addSoftDrop=True, addNsub=True, maxTau=6, addTrimming=True, addFiltering=True ) jetToolbox( process, 'ak4', 'ak4JetSubs', 'out', PUMethod='Puppi', addPUJetID=True, addPruning=True, addSoftDrop=True, addNsub=True, maxTau=6, addTrimming=True, addFiltering=True ) #
# |---- jetToolBox: Running ak8PFJetsCHSSoftDropMass, selectedPatJetsAK8PFCHSSoftDropPacked, selectedPatJetsAK8PFCHSSoftDropSubjets, ak8PFJetsCHSPrunedMass, ak8PFJetsCHSTrimmedMass, ak8PFJetsCHSFilteredMass, NjettinessAK8CHS, NsubjettinessAK8PFCHSSoftDropSubjets. # |---- jetToolBox: Creating selectedPatJetsAK8PFCHS collection. # vector<pat::Jet> "selectedPatJetsAK8PFCHS" "" "Ana" # vector<pat::Jet> "selectedPatJetsAK8PFCHSSoftDropPacked" "" "Ana" # vector<pat::Jet> "selectedPatJetsAK8PFCHSSoftDropPacked" "SubJets" "Ana" # vector<reco::GenJet> "selectedPatJetsAK8PFCHS" "genJets" "Ana" # vector<reco::PFCandidate> "selectedPatJetsAK8PFCHS" "pfCandidates" "Ana" jetToolbox( process, 'ak8', 'ak8JetSubs', 'out', runOnMC = isMC, PUMethod='CHS', addSoftDropSubjets = True, addTrimming = True, rFiltTrim=0.2, ptFrac=0.05, addPruning = True, addFiltering = True, addSoftDrop = True, addNsub = True, bTagInfos = listBTagInfos, bTagDiscriminators = listBtagDiscriminatorsAK8, addCMSTopTagger = False, Cut = ak8Cut , addNsubSubjets = True, subjetMaxTau = 4 ) # |---- jetToolBox: JETTOOLBOX RUNNING ON MiniAOD FOR AK8 JETS USING Puppi # |---- jetToolBox: Applying this corrections: ('AK8PFPuppi', ['L2Relative', 'L3Absolute'], 'None') # |---- jetToolBox: Running ak8PFJetsPuppiSoftDropMass, selectedPatJetsAK8PFPuppiSoftDropPacked, selectedPatJetsAK8PFPuppiSoftDropSubjets, ak8PFJetsPuppiPrunedMass, ak8PFJetsPuppiTrimmedMass, ak8PFJetsPuppiFilteredMass, NjettinessAK8Puppi, NsubjettinessAK8PFPuppiSoftDropSubjets. # |---- jetToolBox: Creating selectedPatJetsAK8PFPuppi collection. # vector<pat::Jet> "selectedPatJetsAK8PFPuppi" "" "Ana" # vector<pat::Jet> "selectedPatJetsAK8PFPuppiSoftDropPacked" "" "Ana"
if _jet_algo_radius == 'ak4' and _PU_method == "CHS": _do_PUJetID = True # create jet sequence with jet toolbox jetToolbox( process, _jet_algo_radius, _seq_name, 'out', #dataTier='miniAOD', miniAOD=True, runOnMC=not options.isData, #JETCorrPayload="None", # do *not* correct jets with JEC JETCorrLevels=[ 'L1FastJet', 'L2Relative', 'L3Absolute', 'L2L3Residual' ], PUMethod=_PU_method, # PU subtraction method addPruning=False, addSoftDrop=False, addPrunedSubjets=False, addNsub=False, maxTau=6, addTrimming=False, addFiltering=False, addNsubSubjets=False, #bTagDiscriminators=None, addPUJetID=_do_PUJetID) # add jet sequence to process process.path *= getattr(process, _seq_name)
# vector<pat::Jet> "selectedPatJetsAK8PFCHSSoftDropPacked" "" "Ana" # vector<pat::Jet> "selectedPatJetsAK8PFCHSSoftDropPacked" "SubJets" "Ana" # vector<reco::GenJet> "selectedPatJetsAK8PFCHS" "genJets" "Ana" # vector<reco::PFCandidate> "selectedPatJetsAK8PFCHS" "pfCandidates" "Ana" jetToolbox(process, 'ak8', 'ak8JetSubs', 'out', runOnMC=isMC, PUMethod='CHS', JETCorrLevels=['None'], subJETCorrLevels=['None'], addSoftDropSubjets=True, addTrimming=True, rFiltTrim=0.2, ptFrac=0.05, addPruning=True, addFiltering=True, addSoftDrop=True, addNsub=True, bTagInfos=listBTagInfos, bTagDiscriminators=listBtagDiscriminatorsAK8, addCMSTopTagger=False, Cut=ak8Cut, addNsubSubjets=True, subjetMaxTau=3) # |---- jetToolBox: JETTOOLBOX RUNNING ON MiniAOD FOR AK8 JETS USING Puppi # |---- jetToolBox: Applying this corrections: ('AK8PFPuppi', ['L2Relative', 'L3Absolute'], 'None') # |---- jetToolBox: Running ak8PFJetsPuppiSoftDropMass, selectedPatJetsAK8PFPuppiSoftDropPacked, selectedPatJetsAK8PFPuppiSoftDropSubjets, ak8PFJetsPuppiPrunedMass, ak8PFJetsPuppiTrimmedMass, ak8PFJetsPuppiFilteredMass, NjettinessAK8Puppi, NsubjettinessAK8PFPuppiSoftDropSubjets. # |---- jetToolBox: Creating selectedPatJetsAK8PFPuppi collection.
process.TFileService = cms.Service( "TFileService", fileName=cms.string('AnalysisOutput_DoubleB.root'), # closeFileFast = cms.untracked.bool(True) ) ## process.demo = cms.EDAnalyzer('DimuonScoutingAnalyzer', ## triggerResults = cms.InputTag("TriggerResults", "", "TEST"), ## muons = cms.InputTag("hltScoutingMuonPackerCalo", "", "TEST"), ## ) from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox jetToolbox(process, 'ak8', 'jetSequence', 'out', PUMethod='Puppi', miniAOD=True, runOnMC=False, addSoftDrop=True) #jetToolbox( process, 'ak8', 'jetSequence', 'out', PUMethod='Puppi', miniAOD=True, runOnMC=False, bTagDiscriminators='pfBoostedDoubleSecondaryVertexAK8BJetTags', addSoftDrop=True) process.demo = cms.EDAnalyzer( 'DoubleBAnalyzer', triggerResults=cms.InputTag("TriggerResults", "", "HLT"), # caloJets = cms.InputTag("hltScoutingCaloPacker", "", "HLT"), # pfJets = cms.InputTag("hltScoutingPFPacker", "", "HLT"), recoAK8Jets=cms.InputTag("selectedPatJetsAK8PFPuppi"), # recoAK8Jets = cms.InputTag("slimmedJetsAK8", "", "RECO"), bDiscriminators=cms.vstring( # list of b-tag discriminators to access # 'pfTrackCountingHighEffBJetTags', # 'pfTrackCountingHighPurBJetTags',
process.puppi.vertexName = cms.InputTag('offlineSlimmedPrimaryVertices') from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox ### CA15Puppi jetToolbox( process, 'ca15', 'jetSequence', 'out', PUMethod='Puppi', miniAOD=options.useMiniAOD, runOnMC=options.runOnMC, bTagDiscriminators=(bTagDiscriminators + ([] if NOTADDHBBTag else ['pfBoostedDoubleSecondaryVertexCA15BJetTags'])), JETCorrPayload='AK8PFPuppi', JETCorrLevels=jetCorrectionLevelsPuppi, subJETCorrPayload='AK4PFPuppi', subJETCorrLevels=jetCorrectionLevelsPuppi, Cut='pt>120', addSoftDrop=True, addSoftDropSubjets=True, betaCut=1.0, zCutSD=0.15, addNsub=True) ### AK8Puppi #jetToolbox( process, 'ak8', 'jetSequence', 'out', PUMethod='Puppi', miniAOD=options.useMiniAOD, runOnMC=options.runOnMC, # bTagDiscriminators=(bTagDiscriminators + ([] if NOTADDHBBTag else ['pfBoostedDoubleSecondaryVertexAK8BJetTags'])), # JETCorrPayload='AK8PFPuppi',JETCorrLevels=jetCorrectionLevelsPuppi,
def reclusterZinv(self, process, cleanedCandidates, suff): # skip all jet smearing for data from TreeMaker.TreeMaker.JetDepot import JetDepot doJERsmearing = self.geninfo ### AK8 detour # https://twiki.cern.ch/CMS/JetToolbox from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox listBTagInfos = ['pfInclusiveSecondaryVertexFinderTagInfos','pfImpactParameterTagInfos'] listBtagDiscriminatorsAK8 = [ 'pfBoostedDoubleSecondaryVertexAK8BJetTags', ] listBtagDiscriminatorsSubjetAK8 = [ 'pfCombinedInclusiveSecondaryVertexV2BJetTags', ] jecLevels = ['L1FastJet', 'L2Relative', 'L3Absolute'] if self.residual: jecLevels.append("L2L3Residual") jetToolbox(process, 'ak8', 'jetSequence', 'out', PUMethod = 'Puppi', miniAOD = True, runOnMC = self.geninfo, postFix='Clean', newPFCollection = True, nameNewPFCollection = cleanedCandidates.value(), Cut = 'pt>170.', addPruning = True, addSoftDropSubjets = True, addNsub = True, maxTau = 3, bTagInfos = listBTagInfos, bTagDiscriminators = listBtagDiscriminatorsAK8, subjetBTagDiscriminators = listBtagDiscriminatorsSubjetAK8, JETCorrLevels = jecLevels, subJETCorrLevels = jecLevels, addEnergyCorrFunc = False, associateTask = False, verbosity = 2 if self.verbose else 0, ) JetAK8CleanTag = cms.InputTag("packedPatJetsAK8PFPuppiCleanSoftDrop") if doJERsmearing: # do central smearing and replace jet tag process, _, JetAK8CleanTag = JetDepot(process, JetTag=JetAK8CleanTag, jecUncDir=0, doSmear=doJERsmearing, jerUncDir=0, storeJer=2, ) # get puppi-specific multiplicities from PhysicsTools.PatAlgos.patPuppiJetSpecificProducer_cfi import patPuppiJetSpecificProducer process.puppiSpecificAK8Clean = patPuppiJetSpecificProducer.clone( src = JetAK8CleanTag ) # update userfloats (used for jet ID, including ID for JEC/JER variations) from TreeMaker.TreeMaker.addJetInfo import addJetInfo process, JetAK8CleanTag = addJetInfo(process, JetAK8CleanTag, ['puppiSpecificAK8Clean:puppiMultiplicity','puppiSpecificAK8Clean:neutralPuppiMultiplicity','puppiSpecificAK8Clean:neutralHadronPuppiMultiplicity', 'puppiSpecificAK8Clean:photonPuppiMultiplicity','puppiSpecificAK8Clean:HFHadronPuppiMultiplicity','puppiSpecificAK8Clean:HFEMPuppiMultiplicity']) process = self.makeJetVarsAK8(process, JetTag=JetAK8CleanTag, suff='AK8Clean', storeProperties=1, doECFs=False, # currently disabled doDeepAK8=False, # currently disabled doDeepDoubleB=False, # currently disabled puppiSpecific="puppiSpecificAK8Clean", ) # update some userfloat names process.JetPropertiesAK8Clean.prunedMass = cms.vstring('ak8PFJetsPuppiCleanPrunedMass') process.JetPropertiesAK8Clean.softDropMass = cms.vstring('SoftDrop') process.JetPropertiesAK8Clean.NsubjettinessTau1 = cms.vstring('NjettinessAK8PuppiClean:tau1') process.JetPropertiesAK8Clean.NsubjettinessTau2 = cms.vstring('NjettinessAK8PuppiClean:tau2') process.JetPropertiesAK8Clean.NsubjettinessTau3 = cms.vstring('NjettinessAK8PuppiClean:tau3') process.JetPropertiesAK8Clean.subjets = cms.vstring('SoftDrop') process.JetPropertiesAK8Clean.SJbDiscriminatorCSV = cms.vstring('SoftDrop','pfCombinedInclusiveSecondaryVertexV2BJetTags') process.JetPropertiesAK8Clean.neutralHadronPuppiMultiplicity = cms.vstring("puppiSpecificAK8Clean:neutralHadronPuppiMultiplicity") process.JetPropertiesAK8Clean.neutralPuppiMultiplicity = cms.vstring("puppiSpecificAK8Clean:neutralPuppiMultiplicity") process.JetPropertiesAK8Clean.photonPuppiMultiplicity = cms.vstring("puppiSpecificAK8Clean:photonPuppiMultiplicity") # process.JetPropertiesAK8Clean.ecfN2b1 = cms.vstring('ak8PFJetsPuppiCleanSoftDropValueMap:nb1AK8PuppiCleanSoftDropN2') # process.JetPropertiesAK8Clean.ecfN3b1 = cms.vstring('ak8PFJetsPuppiCleanSoftDropValueMap:nb1AK8PuppiCleanSoftDropN3') # process.JetPropertiesAK8Clean.ecfN2b2 = cms.vstring('ak8PFJetsPuppiCleanSoftDropValueMap:nb2AK8PuppiCleanSoftDropN2') # process.JetPropertiesAK8Clean.ecfN3b2 = cms.vstring('ak8PFJetsPuppiCleanSoftDropValueMap:nb2AK8PuppiCleanSoftDropN3') ### end AK8 detour # do CHS for jet clustering cleanedCandidatesCHS = cms.EDFilter("CandPtrSelector", src = cleanedCandidates, cut = cms.string("fromPV") ) setattr(process,"cleanedCandidatesCHS"+suff,cleanedCandidatesCHS) # make the RECO jets from RecoJets.JetProducers.ak4PFJets_cfi import ak4PFJets ak4PFJetsClean = ak4PFJets.clone( src = cms.InputTag("cleanedCandidatesCHS"+suff), doAreaFastjet = True ) setattr(process,"ak4PFJetsClean"+suff,ak4PFJetsClean) # turn the RECO jets into PAT jets # for a full list & description of parameters see: # PhysicsTools/PatAlgos/python/tools/jetTools.py from PhysicsTools.PatAlgos.tools.jetTools import addJetCollection jecLevels = ['L1FastJet', 'L2Relative', 'L3Absolute'] if self.residual: jecLevels.append("L2L3Residual") btagDiscs = ['pfCombinedInclusiveSecondaryVertexV2BJetTags','pfDeepCSVDiscriminatorsJetTags:BvsAll'] addJetCollection( process, labelName = 'AK4PFCLEAN'+suff, jetSource = cms.InputTag('ak4PFJetsClean'+suff), pfCandidates = cleanedCandidates, pvSource = cms.InputTag('offlineSlimmedPrimaryVertices'), svSource = cms.InputTag('slimmedSecondaryVertices'), algo = 'AK', rParam = 0.4, getJetMCFlavour = True, # seems to be enough for hadronFlavour() #genJetCollection = cms.InputTag('slimmedGenJets'), genParticles = cms.InputTag('prunedGenParticles'), # likely needed for hadronFlavour().... jetCorrections = ('AK4PFchs', jecLevels, 'None'), btagDiscriminators = btagDiscs, muSource = cms.InputTag("slimmedMuons"), elSource = cms.InputTag("slimmedElectrons") ) # turn on/off GEN matching getattr(process,'patJetsAK4PFCLEAN'+suff).addGenPartonMatch = cms.bool(False) getattr(process,'patJetsAK4PFCLEAN'+suff).addGenJetMatch = cms.bool(False) # turn off some flags for data getattr(process,'patJetsAK4PFCLEAN'+suff).addJetFlavourInfo = cms.bool(self.geninfo) getattr(process,'patJetsAK4PFCLEAN'+suff).getJetMCFlavour = cms.bool(self.geninfo) # apply pt cut to final jet collection (done in slimmedJets) reclusteredJets = cms.EDFilter("PATJetSelector", src = cms.InputTag("patJetsAK4PFCLEAN"+suff), cut = cms.string("pt>10.") ) setattr(process,'reclusteredJets'+suff,reclusteredJets) JetTagClean = cms.InputTag("reclusteredJets"+suff) # recalculate MET from cleaned candidates and reclustered jets postfix="clean"+suff from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties import runMetCorAndUncFromMiniAOD runMetCorAndUncFromMiniAOD( process, isData=not self.geninfo, # controls gen met jetCollUnskimmed='patJetsAK4PFCLEAN'+suff, pfCandColl=cleanedCandidates.value(), recoMetFromPFCs=True, # to recompute reclusterJets=False, # without reclustering reapplyJEC=False, fixEE2017=self.doMETfix, postfix=postfix, ) METTag = cms.InputTag('slimmedMETs'+postfix) if self.doMETfix: runMetCorAndUncFromMiniAOD( process, isData=not self.geninfo, # controls gen met jetCollUnskimmed='patJetsAK4PFCLEAN'+suff, pfCandColl=cleanedCandidates.value(), recoMetFromPFCs=True, # to recompute reclusterJets=False, # without reclustering reapplyJEC=False, postfix=postfix+'Orig', computeMETSignificance=False, ) METTagOrig = cms.InputTag('slimmedMETs'+postfix+'Orig') else: METTagOrig = None # isolated tracks from TreeMaker.Utils.trackIsolationMaker_cfi import trackIsolationFilter IsolatedElectronTracksVetoClean = trackIsolationFilter.clone( doTrkIsoVeto = False, vertexInputTag = cms.InputTag("goodVertices"), pfCandidatesTag = cleanedCandidates, dR_ConeSize = cms.double(0.3), dz_CutValue = cms.double(0.1), minPt_PFCandidate = cms.double(5.0), isoCut = cms.double(0.2), pdgId = cms.int32(11), mTCut = cms.double(100.), METTag = METTag, ) setattr(process,"IsolatedElectronTracksVetoClean"+suff,IsolatedElectronTracksVetoClean) IsolatedMuonTracksVetoClean = trackIsolationFilter.clone( doTrkIsoVeto = False, vertexInputTag = cms.InputTag("goodVertices"), pfCandidatesTag = cleanedCandidates, dR_ConeSize = cms.double(0.3), dz_CutValue = cms.double(0.1), minPt_PFCandidate = cms.double(5.0), isoCut = cms.double(0.2), pdgId = cms.int32(13), mTCut = cms.double(100.), METTag = METTag, ) setattr(process,"IsolatedMuonTracksVetoClean"+suff,IsolatedMuonTracksVetoClean) IsolatedPionTracksVetoClean = trackIsolationFilter.clone( doTrkIsoVeto = False, vertexInputTag = cms.InputTag("goodVertices"), pfCandidatesTag = cleanedCandidates, dR_ConeSize = cms.double(0.3), dz_CutValue = cms.double(0.1), minPt_PFCandidate = cms.double(10.0), isoCut = cms.double(0.1), pdgId = cms.int32(211), mTCut = cms.double(100.), METTag = METTag, ) setattr(process,"IsolatedPionTracksVetoClean"+suff,IsolatedPionTracksVetoClean) self.VarsInt.extend(['IsolatedElectronTracksVetoClean'+suff+':isoTracks(isoElectronTracksclean'+suff+')']) self.VarsInt.extend(['IsolatedMuonTracksVetoClean'+suff+':isoTracks(isoMuonTracksclean'+suff+')']) self.VarsInt.extend(['IsolatedPionTracksVetoClean'+suff+':isoTracks(isoPionTracksclean'+suff+')']) if doJERsmearing: # do central smearing and replace jet tag process, _, JetTagClean = JetDepot(process, JetTag=JetTagClean, jecUncDir=0, doSmear=doJERsmearing, jerUncDir=0, storeJer=2, ) # make the event variables process = self.makeJetVars( process, JetTag = JetTagClean, suff=postfix, storeProperties=1, METfix=self.doMETfix, ) from TreeMaker.Utils.metdouble_cfi import metdouble METclean = metdouble.clone( METTag = METTag, JetTag = cms.InputTag('HTJets'+postfix) ) setattr(process,"METclean"+suff,METclean) self.VarsDouble.extend(['METclean'+suff+':Pt(METclean'+suff+')','METclean'+suff+':Phi(METPhiclean'+suff+')','METclean'+suff+':Significance(METSignificanceclean'+suff+')']) # self.VarsDouble.extend(['METclean'+suff+':RawPt(RawMETclean'+suff+')','METclean'+suff+':RawPhi(RawMETPhiclean'+suff+')']) if self.doMETfix: METcleanOrig = METclean.clone( METTag = METTagOrig ) setattr(process,"METclean"+suff+"Orig",METcleanOrig) self.VarsDouble.extend(['METclean'+suff+'Orig:Pt(METclean'+suff+'Orig)','METclean'+suff+'Orig:Phi(METPhiclean'+suff+'Orig)']) # self.VarsDouble.extend(['METclean'+suff+'Orig:RawPt(RawMETclean'+suff+'Orig)','METclean'+suff+'Orig:RawPhi(RawMETPhiclean'+suff+'Orig)']) return process
##################### # MET Significance # ##################### process.load("RecoMET/METProducers.METSignificance_cfi") process.load("RecoMET/METProducers.METSignificanceParams_cfi") from RecoMET.METProducers.testInputFiles_cff import recoMETtestInputFiles ####################### # AK10 collection # ####################### if options.runAK10: from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox jetToolbox( process, 'ak10', 'ak10JetSubs', 'out', runOnMC=(not options.isData), addPruning=True, addSoftDrop=True , addPrunedSubjets=True, addSoftDropSubjets=True, JETCorrPayload='AK3Pachs', subJETCorrPayload='AK10PFchs', JETCorrLevels=['L1FastJet', 'L2Relative', 'L3Absolute'], addNsub=True, maxTau=6, addTrimming=True, addFiltering=True, addEnergyCorrFunc=True, maxECF=5 ) ####################### # Quark gluon tagging # ####################### if options.runQG: qgDatabaseVersion = 'v1' # check https://twiki.cern.ch/twiki/bin/viewauth/CMS/QGDataBaseVersion from CondCore.DBCommon.CondDBSetup_cfi import * QGPoolDBESSource = cms.ESSource("PoolDBESSource", CondDBSetup, toGet = cms.VPSet(), connect = cms.string('frontier://FrontierProd/CMS_COND_PAT_000'), )
listBtagDiscriminatorsAK4 = [ 'pfJetProbabilityBJetTags', 'pfCombinedInclusiveSecondaryVertexV2BJetTags', 'pfCombinedMVAV2BJetTags', 'pfCombinedCvsLJetTags', 'pfCombinedCvsBJetTags', ] jetToolbox( process, 'ak8', 'ak8JetSubs', 'out', PUMethod='CHS', #updateCollection='slimmedJetsAK8', JETCorrPayload='AK8PFchs', #addEnergyCorrFunc=True, #updateCollectionSubjets='slimmedJetsAK8PFCHSSoftDropPacked:SubJets', subJETCorrPayload='AK4PFchs', bTagDiscriminators=listBtagDiscriminatorsAK4, #addNsubSubjets=True, addPrunedSubjets=True, postFix='CollectionTests', addTrimming=True, addPruning=True) #, addPrunedSubjets=True, subJETCorrPayload='AK4PFchs' ) jetToolbox( process, 'ak8', 'ak8JetSubs', 'out', PUMethod='CHS', #updateCollection='slimmedJetsAK8',
### ------------------------------------------------------------------ process.load('CommonTools/PileupAlgos/Puppi_cff') ## e.g. to run on miniAOD process.puppi.candName = cms.InputTag('packedPFCandidates') process.puppi.vertexName = cms.InputTag('offlineSlimmedPrimaryVertices') ### ------------------------------------------------------------------ ### Recluster jets and adding subtructure tools from jetToolbox ### (https://twiki.cern.ch/twiki/bin/viewauth/CMS/JetToolbox) ### ------------------------------------------------------------------ from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox process.puppiOnTheFly = process.puppi.clone() process.puppiOnTheFly.useExistingWeights = True if "MC" in options.DataProcessing: jetToolbox( process, 'ak4', 'analysisPath', 'edmNtuplesOut', addQGTagger=True ) jetToolbox( process, 'ak8', 'analysisPath', 'edmNtuplesOut', addSoftDropSubjets=True, addTrimming=True, rFiltTrim=0.1, addPruning=True, addFiltering=True, addSoftDrop=True, addNsub=True ) jetToolbox( process, 'ca8', 'analysisPath', 'edmNtuplesOut', addCMSTopTagger=True ) jetToolbox( process, 'ak8', 'analysisPath', 'edmNtuplesOut', PUMethod='Puppi', newPFCollection=True, nameNewPFCollection='puppiOnTheFly', addSoftDropSubjets=True, addTrimming=True, addPruning=True, addFiltering=True, addSoftDrop=True, addNsub=True ) else: jetToolbox( process, 'ak4', 'analysisPath', 'edmNtuplesOut', runOnMC=False, addQGTagger=True ) jetToolbox( process, 'ak8', 'analysisPath', 'edmNtuplesOut', runOnMC=False, addSoftDropSubjets=True, addTrimming=True, rFiltTrim=0.1, addPruning=True, addFiltering=True, addSoftDrop=True, addNsub=True ) jetToolbox( process, 'ca8', 'analysisPath', 'edmNtuplesOut', runOnMC=False, addCMSTopTagger=True ) jetToolbox( process, 'ak8', 'analysisPath', 'edmNtuplesOut', runOnMC=False, PUMethod='Puppi', newPFCollection=True, nameNewPFCollection='puppiOnTheFly', addSoftDropSubjets=True, addTrimming=True, addPruning=True, addFiltering=True, addSoftDrop=True, addNsub=True ) jLabelAK8 = 'selectedPatJetsAK8PFCHS' jLabel = 'selectedPatJetsAK4PFCHS' jLabelNoHF = 'selectedPatJetsAK4PFCHS' ### --------------------------------------------------------------------------- ### Removing the HF from the MET computation as from 7 Aug 2015 recommendations
pfDeepBoostedJetTags.model_path = 'RecoBTag/Combined/data/DeepBoostedJet/V02/full/resnet-symbol.json' pfDeepBoostedJetTags.param_path = 'RecoBTag/Combined/data/DeepBoostedJet/V02/full/resnet-0000.params' pfMassDecorrelatedDeepBoostedJetTags.preprocessParams = pfMassDecorrelatedDeepBoostedJetPreprocessParamsV02 pfMassDecorrelatedDeepBoostedJetTags.model_path = 'RecoBTag/Combined/data/DeepBoostedJet/V02/decorrelated/resnet-symbol.json' pfMassDecorrelatedDeepBoostedJetTags.param_path = 'RecoBTag/Combined/data/DeepBoostedJet/V02/decorrelated/resnet-0000.params' from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox jetToolbox( process, 'ak8', 'jetSequence', 'noOutput', dataTier='miniAOD', runOnMC=False, updateCollection='slimmedJetsAK8', JETCorrPayload='AK8PFchs', JETCorrLevels=['L1FastJet', 'L2Relative', 'L3Absolute', 'L2L3Residual'], bTagDiscriminators=[ "pfDeepBoostedDiscriminatorsJetTags:TvsQCD", "pfDeepBoostedDiscriminatorsJetTags:WvsQCD", "pfDeepBoostedDiscriminatorsJetTags:ZvsQCD", "pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:TvsQCD", "pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:WvsQCD", "pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:ZvsQCD", ]) ## AK8Jet Tag: selectedUpdatedPatJetsAK8WithDeepTags from PhysicsTools.PatAlgos.tools.helpers import getPatAlgosToolsTask task = getPatAlgosToolsTask(process) process.endpath = cms.EndPath(task) ##--| ##Updating Jet collection for DeepFlavor tagger
JEC = ['L1FastJet', 'L2Relative', 'L3Absolute'] if not isMC: JEC += ['L2L3Residual'] jetToolbox( process, 'ak4', 'myJetSequence', 'outTemp', JETCorrPayload='AK4PFchs', JETCorrLevels=JEC, miniAOD=True, runOnMC=isMC, addNsub=True, # was True #addPUJetID=False, #bTagDiscriminators = ['pfTrackCountingHighEffBJetTags','pfTrackCountingHighPurBJetTags','pfJetProbabilityBJetTags','pfJetBProbabilityBJetTags','pfSimpleSecondaryVertexHighEffBJetTags','pfSimpleSecondaryVertexHighPurBJetTags','pfCombinedSecondaryVertexV2BJetTags','pfCombinedInclusiveSecondaryVertexV2BJetTags','pfCombinedMVAV2BJetTags'], #bTagDiscriminators = ['pfTrackCountingHighEffBJetTags','pfTrackCountingHighPurBJetTags','pfJetProbabilityBJetTags','pfJetBProbabilityBJetTags','pfSimpleSecondaryVertexHighEffBJetTags','pfSimpleSecondaryVertexHighPurBJetTags','pfCombinedSecondaryVertexV2BJetTags','pfCombinedInclusiveSecondaryVertexV2BJetTags'], #bTagDiscriminators = ['pfTrackCountingHighEffBJetTags','pfTrackCountingHighPurBJetTags','pfJetProbabilityBJetTags','pfJetBProbabilityBJetTags','pfSimpleSecondaryVertexHighEffBJetTags','pfSimpleSecondaryVertexHighPurBJetTags','pfCombinedSecondaryVertexV2BJetTags','pfCombinedInclusiveSecondaryVertexV2BJetTags'], addPUJetID=True, addPruning=False, addTrimming=False, addCMSTopTagger=True, addHEPTopTagger=True, addMassDrop=True, addSoftDrop=False, addQGTagger=True, # addSoftDrop=True ) #, addPrunedSubjets=True ) preSeq += process.myJetSequence # no need to recorrect the jets, since they are reclustered on the fly
process.load('FWCore.MessageLogger.MessageLogger_cfi') process.MessageLogger.cerr.FwkReport.reportEvery = 100 #process.MessageLogger.suppressWarning = cms.untracked.vstring('ecalLaserCorrFilter','manystripclus53X','toomanystripclus53X') process.options = cms.untracked.PSet(wantSummary=cms.untracked.bool(True)) process.options.allowUnscheduled = cms.untracked.bool(True) #process.load("JetMETCorrections.Configuration.JetCorrectionServices_cff") #process.load("JetMETCorrections.Configuration.JetCorrectionServicesAllAlgos_cff") ######################################################################## #### THESE EXAMPLES ARE JUST TESTS, MOST OF THEM ARE TOTALLY WRONG. #### THERE ARE JUST TO TEST SEVERAL FEATURES OF THE JETTOOLBOX. ####################################################################### from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox ''' jetToolbox( process, 'ak8', 'jetSequence', 'out', PUMethod='CHS', miniAOD=True, #Cut='pt > 200 && abs(eta) < 2.5', # Tight runOnMC=False, addPruning = True, addSoftDrop = True, addNsub = True, #addPrunedSubjets=True, addSoftDropSubjets=True, #addNsubSubjets =True ) #jetToolbox( process, 'ak4', 'jetSequence', 'out', PUMethod='Puppi', miniAOD=True, runOnMC=True ) #process.load('CommonTools.PileupAlgos.Puppi_cff') #process.PuppiOnTheFly = process.puppi.clone( candName = cms.InputTag( 'packedPFCandidates' ), vertexName = cms.InputTag( 'offlineSlimmedPrimaryVertices' ), clonePackedCands = cms.bool(True) ) #process.PuppiOnTheFly.useExistingWeights = True #jetToolbox(process, 'ak4', 'dummy', 'out', PUMethod = 'Puppi', JETCorrPayload = 'AK4PFchs', JETCorrLevels = ['L2Relative', 'L3Absolute'], miniAOD = True, newPFCollection=True, nameNewPFCollection='puppi')
bTagDiscriminators = [ 'pfCombinedInclusiveSecondaryVertexV2BJetTags', 'pfBoostedDoubleSecondaryVertexAK8BJetTags' ] JETCorrLevels = ['L2Relative', 'L3Absolute'] from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox jetToolbox(process, 'ak8', 'jetSequence', 'out', PUMethod='Puppi', JETCorrPayload='AK8PFPuppi', JETCorrLevels=JETCorrLevels, miniAOD=True, runOnMC=True, Cut='pt > 170.0 && abs(rapidity()) < 2.4', addNsub=True, maxTau=3, addSoftDrop=True, addSoftDropSubjets=True, subJETCorrPayload='AK4PFPuppi', subJETCorrLevels=JETCorrLevels, bTagDiscriminators=bTagDiscriminators) # srcJets = cms.untracked.InputTag('selectedPatJetsAK8PFPuppi') # srcSubjets = cms.untracked.InputTag('selectedPatJetsAK8PFPuppiSoftDropPacked') # --------------------------------------------------------- process.out = cms.OutputModule("PoolOutputModule", fileName=cms.untracked.string('ntuple.root'), dropMetaData=cms.untracked.string("ALL"),
jetAlgoAK8 = 'AK8PFchs' jetAlgoAK8Puppi = 'AK8PFPuppi' ak8Cut = 'pt > 170 && abs(eta) < 2.4' jetToolbox( process, 'ak8', 'analysisPath', 'edmNtuplesOut', runOnMC=True, #updateCollection=jetAK8Label, #updateCollectionSubjets=subjetAK8Label, #JETCorrPayload=jetAlgoAK8, addSoftDropSubjets=True, addTrimming=True, rFiltTrim=0.1, addPruning=True, addFiltering=True, addSoftDrop=True, addNsub=True, bTagInfos=listBTagInfos, bTagDiscriminators=listBtagDiscriminatorsAK8, Cut=ak8Cut, addNsubSubjets=True, subjetMaxTau=4) jetToolbox(process, 'ak8', 'analysisPath', 'edmNtuplesOut',
process.source = cms.Source( "PoolSource", # replace 'myfile.root' with the source file you want to use fileNames=cms.untracked.vstring(files)) process.MessageLogger.cerr.FwkReport.reportEvery = 1000 #================================================================================ # Remake the Jet Collections //////////////////////////////////////////////////// #================================================================================ # Adjust the jet collection to include tau4 jetToolbox(process, 'ak8', 'jetsequence', 'out', updateCollection='slimmedJetsAK8', JETCorrPayload='AK8PFchs', addNsub=True, maxTau=4) #================================================================================ # Prepare and run producer ////////////////////////////////////////////////////// #================================================================================ # Apply a preselction process.selectedAK8Jets = cms.EDFilter( 'PATJetSelector', src=cms.InputTag('selectedPatJetsAK8PFCHS'), cut=cms.string('pt > 100.0 && abs(eta) < 2.4'), filter=cms.bool(True))
cut = cms.string(muonID), ) #HERE WE RUN A MODULE FROM SAM HARPER WHICH INSERTS HEEP CUT INFO INTO THE PAT ELECTRON USER DATA #we setup the HEEP ID V7.0 and enable VID via the following function #and then add it to a new collection of pat::Electrons #there is the option to call the new collection "slimmedElectrons" (useStdName=True) #otherwise it calls them "heepElectrons" #it creates a sequence "process.heepSequence" which we add to our path #from HEEP.VID.tools import addHEEPV70ElesMiniAOD from ExoAnalysis.cmsWRextensions.tools import addHEEPV70ElesMiniAOD addHEEPV70ElesMiniAOD(process,useStdName=False) from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox jetToolbox( process, 'ak8', 'jetSequence', 'out', PUMethod='Puppi', miniAOD=True, runOnMC=options.isMC, addSoftDrop=True , addSoftDropSubjets=True, addNsub=True, JETCorrPayload='AK8PFPuppi', JETCorrLevels=['L1FastJet','L2Relative', 'L3Absolute']) process.options.allowUnscheduled = cms.untracked.bool(True) ##this is our example analysis module reading the results, you will have your own module #process.heepIdExample = cms.EDAnalyzer("HEEPV70PATExample", # eles=cms.InputTag("slimmedElectrons"), # ) #process.p = cms.Path( # process.heepSequence* # process.heepIdExample) #our analysing example module, replace with your module # #process.muonSelectionSeq = cms.Sequence(process.TriggerFilter * process.badGlobalMuonTagger * process.cloneGlobalMuonTagger * process.removeBadAndCloneGlobalMuons * process.tunePMuons * process.tuneIDMuons) process.muonSelectionSeq = cms.Sequence(cms.ignore(process.badGlobalMuonTagger) * cms.ignore(process.cloneGlobalMuonTagger) * process.removeBadAndCloneGlobalMuons * process.tunePMuons * process.tuneIDMuons)
# https://github.com/cms-jet/JRDatabase/tree/master/textFiles jetAlgoAK8 = 'AK8PFchs' jetAlgoAK8Puppi = 'AK8PFPuppi' ak8Cut='pt > 170 && abs(eta) < 2.4' jetToolbox( process, 'ak8', 'analysisPath', 'edmNtuplesOut', runOnMC=True, #updateCollection=jetAK8Label, #updateCollectionSubjets=subjetAK8Label, #JETCorrPayload=jetAlgoAK8, addSoftDropSubjets=True, addTrimming=True, rFiltTrim=0.1, addPruning=True, addFiltering=True, addSoftDrop=True, addNsub=True, bTagInfos=listBTagInfos, bTagDiscriminators=listBtagDiscriminatorsAK8, Cut=ak8Cut, addNsubSubjets=True, subjetMaxTau=4 ) jetToolbox( process, 'ak8', 'analysisPath', 'edmNtuplesOut', runOnMC=True,
process.load('FWCore.MessageLogger.MessageLogger_cfi') process.MessageLogger.cerr.FwkReport.reportEvery = 10 process.MessageLogger.suppressWarning = cms.untracked.vstring('ecalLaserCorrFilter','manystripclus53X','toomanystripclus53X') process.options = cms.untracked.PSet( wantSummary = cms.untracked.bool(True) ) process.options.allowUnscheduled = cms.untracked.bool(True) ######################################################################## #### THESE EXAMPLES ARE JUST TEST, MOST OF THEM ARE TOTALLY WRONG. #### THERE ARE JUST TO TEST SEVERAL FEATURES OF THE JETTOOLBOX. ####################################################################### from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox #jetToolbox( process, 'ak8', 'ak8JetSubs', 'out', PUMethod='Puppi', addPruning=True, addSoftDrop=True , addPrunedSubjets=True, addSoftDropSubjets=True, addNsub=True, maxTau=6, addTrimming=True, addFiltering=True , JETCorrPayload='AK8PFchs', subJETCorrPayload='AK4PFchs', subJETCorrLevels=['L2Relative', 'L3Absoulte'] ) #, Cut='pt > 100 && abs(eta) < 2.4' ) #jetToolbox( process, 'ak8', 'ak8JetSubs', 'out', PUMethod='SK', addPruning=True, addSoftDrop=True , addPrunedSubjets=True, addSoftDropSubjets=True, addNsub=True, maxTau=6, addTrimming=True, addFiltering=True, JETCorrLevels=['L1FastJet', 'L2Relative'] ) #jetToolbox( process, 'ak8', 'ak8JetSubs', 'out', PUMethod='CS', addPruning=True, addSoftDrop=True , addPrunedSubjets=True, addSoftDropSubjets=True, addNsub=True, maxTau=6, addTrimming=True, addFiltering=True ) jetToolbox( process, 'ak8', 'ak8JetSubs', 'out', addPruning=True, addSoftDrop=True , addPrunedSubjets=True, addSoftDropSubjets=True, addNsub=True, maxTau=6, addTrimming=True, addFiltering=True, JETCorrPayload='AK3Pachs', subJETCorrPayload='AK8PFchs', JETCorrLevels=['L1FastJet', 'L2Relative'], addEnergyCorrFunc=True, maxECF=5 ) # #jetToolbox( process, 'ca8', 'ca8JetSubs', 'out', PUMethod='Puppi', addCMSTopTagger=True, addMassDrop=True, addSoftDrop=True ) #jetToolbox( process, 'ca8', 'ca8JetSubs', 'out', PUMethod='SK', addCMSTopTagger=True, addMassDrop=True, addSoftDrop=True, JETCorrPayload='AK8PF' ) #jetToolbox( process, 'ca8', 'ca8JetSubs', 'out', PUMethod='CS', addCMSTopTagger=True, addMassDrop=True, addSoftDrop=True, JETCorrLevels=['L2Relative'] ) #jetToolbox( process, 'ca8', 'ca8JetSubs', 'out', addCMSTopTagger=True, addMassDrop=True, addSoftDrop=True ) #jetToolbox( process, 'ca8', 'ca8JetSubs', 'out', addCMSTopTagger=True, addMassDrop=True, addSoftDrop=True, JETCorrPayload='AK8PFchs', JETCorrLevels=['L3Absolute'] ) #jetToolbox( process, 'ca12', 'ca12JetSubs', 'out', PUMethod='Puppi', addHEPTopTagger=True, addSoftDrop=True ) #jetToolbox( process, 'ca12', 'ca12JetSubs', 'out', PUMethod='SK', addHEPTopTagger=True, addSoftDrop=True ) #jetToolbox( process, 'ca12', 'ca12JetSubs', 'out', PUMethod='CS', addHEPTopTagger=True, addSoftDrop=True ) #jetToolbox( process, 'ca12', 'ca12JetSubs', 'out', addHEPTopTagger=True, addSoftDrop=True ) #jetToolbox( process, 'ak8', 'ak8JetSubs', 'out' , addPruning=True, addSoftDrop=True, addNsub=True, maxTau=6, addTrimming=True, addFiltering=True ) #jetToolbox( process, 'ak4', 'ak4JetSubs', 'out', addQGTagger=True) #PUMethod='Puppi', addPUJetID=True, addPruning=True, addSoftDrop=True, addNsub=True, maxTau=6, addTrimming=True, addFiltering=True ) #jetToolbox( process, 'ak4', 'ak4JetSubs', 'out', addQGTagger=True, QGjetsLabel='', PUMethod='Plain' ) #jetToolbox( process, 'ak4', 'ak4JetSubs', 'out', addQGTagger=True, PUMethod='Puppi' )
# |---- jetToolBox: Running ak8PFJetsCHSSoftDropMass, selectedPatJetsAK8PFCHSSoftDropPacked, selectedPatJetsAK8PFCHSSoftDropSubjets, ak8PFJetsCHSPrunedMass, ak8PFJetsCHSTrimmedMass, ak8PFJetsCHSFilteredMass, NjettinessAK8CHS, NsubjettinessAK8PFCHSSoftDropSubjets. # |---- jetToolBox: Creating selectedPatJetsAK8PFCHS collection. # vector<pat::Jet> "selectedPatJetsAK8PFCHS" "" "Ana" # vector<pat::Jet> "selectedPatJetsAK8PFCHSSoftDropPacked" "" "Ana" # vector<pat::Jet> "selectedPatJetsAK8PFCHSSoftDropPacked" "SubJets" "Ana" # vector<reco::GenJet> "selectedPatJetsAK8PFCHS" "genJets" "Ana" # vector<reco::PFCandidate> "selectedPatJetsAK8PFCHS" "pfCandidates" "Ana" jetToolbox( process, 'ak8', 'ak8JetSubs', 'out', runOnMC = isMC, PUMethod='CHS', addSoftDropSubjets = True, addTrimming = True, rFiltTrim=0.2, ptFrac=0.05, addPruning = True, addFiltering = True, addSoftDrop = True, addNsub = True, bTagInfos = listBTagInfos, bTagDiscriminators = listBtagDiscriminatorsAK8, addCMSTopTagger = False, Cut = ak8Cut , addNsubSubjets = True, subjetMaxTau = 3 ) # |---- jetToolBox: JETTOOLBOX RUNNING ON MiniAOD FOR AK8 JETS USING Puppi # |---- jetToolBox: Applying this corrections: ('AK8PFPuppi', ['L2Relative', 'L3Absolute'], 'None') # |---- jetToolBox: Running ak8PFJetsPuppiSoftDropMass, selectedPatJetsAK8PFPuppiSoftDropPacked, selectedPatJetsAK8PFPuppiSoftDropSubjets, ak8PFJetsPuppiPrunedMass, ak8PFJetsPuppiTrimmedMass, ak8PFJetsPuppiFilteredMass, NjettinessAK8Puppi, NsubjettinessAK8PFPuppiSoftDropSubjets. # |---- jetToolBox: Creating selectedPatJetsAK8PFPuppi collection. # vector<pat::Jet> "selectedPatJetsAK8PFPuppi" "" "Ana" # vector<pat::Jet> "selectedPatJetsAK8PFPuppiSoftDropPacked" "" "Ana"
# |---- jetToolBox: Creating selectedPatJetsAK8PFCHS collection. # vector<pat::Jet> "selectedPatJetsAK8PFCHS" "" "Ana" # vector<pat::Jet> "selectedPatJetsAK8PFCHSSoftDropPacked" "" "Ana" # vector<pat::Jet> "selectedPatJetsAK8PFCHSSoftDropPacked" "SubJets" "Ana" # vector<reco::GenJet> "selectedPatJetsAK8PFCHS" "genJets" "Ana" # vector<reco::PFCandidate> "selectedPatJetsAK8PFCHS" "pfCandidates" "Ana" jetToolbox( process, 'ak8', 'ak8JetSubs', 'out', runOnMC = isMC, PUMethod='CHS', JETCorrLevels = [ 'None' ], subJETCorrLevels = [ 'None' ], addSoftDropSubjets = True, addTrimming = True, rFiltTrim=0.2, ptFrac=0.05, addPruning = True, addFiltering = True, addSoftDrop = True, addNsub = True, bTagInfos = listBTagInfos, bTagDiscriminators = listBtagDiscriminatorsAK8, addCMSTopTagger = False, Cut = ak8Cut , addNsubSubjets = True, subjetMaxTau = 3 ) # |---- jetToolBox: JETTOOLBOX RUNNING ON MiniAOD FOR AK8 JETS USING Puppi # |---- jetToolBox: Applying this corrections: ('AK8PFPuppi', ['L2Relative', 'L3Absolute'], 'None') # |---- jetToolBox: Running ak8PFJetsPuppiSoftDropMass, selectedPatJetsAK8PFPuppiSoftDropPacked, selectedPatJetsAK8PFPuppiSoftDropSubjets, ak8PFJetsPuppiPrunedMass, ak8PFJetsPuppiTrimmedMass, ak8PFJetsPuppiFilteredMass, NjettinessAK8Puppi, NsubjettinessAK8PFPuppiSoftDropSubjets. # |---- jetToolBox: Creating selectedPatJetsAK8PFPuppi collection. # vector<pat::Jet> "selectedPatJetsAK8PFPuppi" "" "Ana"
# calculate and evaluate PUJetID only for ak4CHS jets (TODO: do we need this?) _do_PUJetID = False if _jet_algo_radius == 'ak4' and _PU_method == "CHS": _do_PUJetID = True # create jet sequence with jet toolbox jetToolbox( process, _jet_algo_radius, _seq_name, 'out', miniAOD=True, runOnMC=not options.isData, JETCorrPayload="None", # do *not* correct jets with JEC PUMethod=_PU_method, # PU subtraction method addPruning=False, addSoftDrop=False, addPrunedSubjets=False, addNsub=False, maxTau=6, addTrimming=False, addFiltering=False, addNsubSubjets=False, addPUJetID=_do_PUJetID) # add jet sequence to process process.path *= getattr(process, _seq_name) # add PUJetID calculator and evaluator to process if _do_PUJetID: process.path *= getattr(
process.source = cms.Source( "PoolSource", fileNames=cms.untracked.vstring( "/store/mc/RunIISummer16MiniAODv2/SUSYZHToAA_AATo4B_M-50_TuneCUETP8M1_13TeV_madgraph_pythia8/MINIAODSIM/PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6-v2/00000/BEEEFB4E-37C8-E811-A98B-001E6757E05C.root" ), inputCommands=cms.untracked.vstring( 'keep *', 'drop *_ctppsLocalTrackLiteProducer_*_RECO' #CTPPSPixelClusteredmDetSetVector_ctppsPixelClusters_*_RECO' )) process.TFileService = cms.Service("TFileService", fileName=cms.string("analysis.root")) jetToolbox(process, 'ak8', 'jetSequence', 'out', PUMethod='CHS', addPruning=True, addSoftDrop=True, addNsubSubjets=True, addSoftDropSubjets=True, addNsub=True, Cut="pt>20") process.dump = cms.EDAnalyzer("EventContentAnalyzer") process.p = cms.Path(process.fullPatMetSequence * process.mainNtuplizer) #* process.dump )
from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox # from RecoJets.JetProducers.jetToolbox_cff import jetToolbox process.myJetSequence = cms.Sequence() # the new sequence , temporary output file jetToolbox( process, "ak4", "myJetSequence", "outTemp", JETCorrPayload="AK4PFchs", JETCorrLevels=["L1FastJet", "L2Relative", "L3Absolute"], miniAOD=True, addNsub=True, # addPUJetID=False, addPUJetID=True, addPruning=False, addTrimming=False, addCMSTopTagger=True, addHEPTopTagger=True, addMassDrop=True, addSoftDrop=False, # addSoftDrop=True ) # , addPrunedSubjets=True ) preSeq += process.myJetSequence # no need to recorrect the jets, since they are reclustered on the fly # the name patJetsAK4PFCHS found looking at the "processDump.py" and looking for patjetproducer # edmConfigDump stepB.py &> processDump.py
def ak8JetSequences(process, isRealData): #https://twiki.cern.ch/twiki/bin/view/CMS/Hbbtagging#V4_training # bTagDiscriminators = ['pfMassIndependentDeepDoubleBvLJetTags:probHbb'] #https://twiki.cern.ch/twiki/bin/view/CMS/Hbbtagging bTagDiscriminators = [ 'pfMassIndependentDeepDoubleBvLJetTags:probHbb', 'pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:ZHbbvsQCD', 'pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:HbbvsQCD', 'pfDeepBoostedDiscriminatorsJetTags:HbbvsQCD' ] #https://twiki.cern.ch/twiki/bin/view/CMS/Hbbtagging subjetBTagDiscriminators = [ 'pfDeepCSVJetTags:probb', 'pfDeepCSVJetTags:probbb' ] JETCorrLevels = ['L1FastJet', 'L2Relative', 'L3Absolute'] if isRealData: JETCorrLevels.append('L2L3Residual') jetToolbox(process, 'ak8', 'jetSequence', 'noOutput', PUMethod='Puppi', postFix='wLep', JETCorrPayload='AK8PFPuppi', JETCorrLevels=JETCorrLevels, runOnMC=(not isRealData), addSoftDrop=True, addSoftDropSubjets=True, addNsub=True, subJETCorrPayload='AK4PFPuppi', subJETCorrLevels=JETCorrLevels, bTagDiscriminators=['None'], subjetBTagDiscriminators=subjetBTagDiscriminators) jetToolbox(process, 'ak8', 'jetSequence', 'noOutput', PUMethod='Puppi', postFix='NoLep', newPFCollection=True, nameNewPFCollection='leptonLesspuppi', JETCorrPayload='AK8PFPuppi', JETCorrLevels=JETCorrLevels, runOnMC=(not isRealData), addSoftDrop=True, addSoftDropSubjets=True, addNsub=True, subJETCorrPayload='AK4PFPuppi', subJETCorrLevels=JETCorrLevels, bTagDiscriminators=['None'], subjetBTagDiscriminators=['None']) #because there was a built in 100 GeV cut???? process.ak8PFJetsPuppiwLepSoftDrop.jetPtMin = 10 process.ak8PFJetsPuppiNoLepSoftDrop.jetPtMin = 10 #add in alternative SDs _addProcessAndTask( process, "ak8PFJetsPuppiwLepSoftDropZ0p15", process.ak8PFJetsPuppiwLepSoftDrop.clone(zcut=cms.double(0.15))) _addProcessAndTask( process, "ak8PFJetsPuppiwLepSoftDropMassZ0p15", process.ak8PFJetsPuppiwLepSoftDropMass.clone( matched=cms.InputTag("ak8PFJetsPuppiwLepSoftDropZ0p15"))) process.patJetsAK8PFPuppiwLep.userData.userFloats.src += [ 'ak8PFJetsPuppiwLepSoftDropMassZ0p15' ] _addProcessAndTask( process, "ak8PFJetsPuppiwLepSoftDropZ0p05", process.ak8PFJetsPuppiwLepSoftDrop.clone(zcut=cms.double(0.05))) _addProcessAndTask( process, "ak8PFJetsPuppiwLepSoftDropMassZ0p05", process.ak8PFJetsPuppiwLepSoftDropMass.clone( matched=cms.InputTag("ak8PFJetsPuppiwLepSoftDropZ0p05"))) process.patJetsAK8PFPuppiwLep.userData.userFloats.src += [ 'ak8PFJetsPuppiwLepSoftDropMassZ0p05' ] _addProcessAndTask( process, "ak8PFJetsPuppiNoLepSoftDropZ0p15", process.ak8PFJetsPuppiNoLepSoftDrop.clone(zcut=cms.double(0.15))) _addProcessAndTask( process, "ak8PFJetsPuppiNoLepSoftDropMassZ0p15", process.ak8PFJetsPuppiNoLepSoftDropMass.clone( matched=cms.InputTag("ak8PFJetsPuppiNoLepSoftDropZ0p15"))) process.patJetsAK8PFPuppiNoLep.userData.userFloats.src += [ 'ak8PFJetsPuppiNoLepSoftDropMassZ0p15' ] _addProcessAndTask( process, "ak8PFJetsPuppiNoLepSoftDropZ0p05", process.ak8PFJetsPuppiNoLepSoftDrop.clone(zcut=cms.double(0.05))) _addProcessAndTask( process, "ak8PFJetsPuppiNoLepSoftDropMassZ0p05", process.ak8PFJetsPuppiNoLepSoftDropMass.clone( matched=cms.InputTag("ak8PFJetsPuppiNoLepSoftDropZ0p05"))) process.patJetsAK8PFPuppiNoLep.userData.userFloats.src += [ 'ak8PFJetsPuppiNoLepSoftDropMassZ0p05' ] #https://twiki.cern.ch/twiki/bin/viewauth/CMS/DeepAKXTagging#CMSSW_recipes from RecoBTag.MXNet.pfDeepBoostedJet_cff import pfDeepBoostedJetTags, pfMassDecorrelatedDeepBoostedJetTags from RecoBTag.MXNet.Parameters.V02.pfDeepBoostedJetPreprocessParams_cfi import pfDeepBoostedJetPreprocessParams as pfDeepBoostedJetPreprocessParamsV02 from RecoBTag.MXNet.Parameters.V02.pfMassDecorrelatedDeepBoostedJetPreprocessParams_cfi import pfMassDecorrelatedDeepBoostedJetPreprocessParams as pfMassDecorrelatedDeepBoostedJetPreprocessParamsV02 pfDeepBoostedJetTags.preprocessParams = pfDeepBoostedJetPreprocessParamsV02 pfDeepBoostedJetTags.model_path = 'RecoBTag/Combined/data/DeepBoostedJet/V02/full/resnet-symbol.json' pfDeepBoostedJetTags.param_path = 'RecoBTag/Combined/data/DeepBoostedJet/V02/full/resnet-0000.params' pfMassDecorrelatedDeepBoostedJetTags.preprocessParams = pfMassDecorrelatedDeepBoostedJetPreprocessParamsV02 pfMassDecorrelatedDeepBoostedJetTags.model_path = 'RecoBTag/Combined/data/DeepBoostedJet/V02/decorrelated/resnet-symbol.json' pfMassDecorrelatedDeepBoostedJetTags.param_path = 'RecoBTag/Combined/data/DeepBoostedJet/V02/decorrelated/resnet-0000.params' from PhysicsTools.PatAlgos.tools.jetTools import updateJetCollection from RecoBTag.MXNet.pfDeepBoostedJet_cff import _pfDeepBoostedJetTagsAll updateJetCollection( process, jetSource=cms.InputTag('packedPatJetsAK8PFPuppiwLepSoftDrop'), pvSource=cms.InputTag('offlineSlimmedPrimaryVertices'), svSource=cms.InputTag('slimmedSecondaryVertices'), rParam=0.8, jetCorrections=('AK8PFPuppi', cms.vstring(JETCorrLevels), 'None'), btagDiscriminators=bTagDiscriminators, postfix= 'AK8wLepWithPuppiDaughters', # !!! postfix must contain "WithPuppiDaughter" !!! printWarning=False) updateJetCollection( process, jetSource=cms.InputTag('packedPatJetsAK8PFPuppiNoLepSoftDrop'), pvSource=cms.InputTag('offlineSlimmedPrimaryVertices'), svSource=cms.InputTag('slimmedSecondaryVertices'), rParam=0.8, jetCorrections=('AK8PFPuppi', cms.vstring(JETCorrLevels), 'None'), btagDiscriminators=[ 'pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:WvsQCD' ], postfix= 'AK8NoLepWithPuppiDaughters', # !!! postfix must contain "WithPuppiDaughter" !!! printWarning=False) from AnalysisTreeMaker.Utilities.leptonInJetProducer_cff import addJetVars addJetVars(process, process.jetSequence, "ak8", "Puppi", "wLep") process.packedPatJetsAK8PFPuppiwLepSoftDroplepInJetMVAValueMap.src = cms.InputTag( 'selectedUpdatedPatJetsAK8wLepWithPuppiDaughters')
#from RecoJets.JetProducers.jetToolbox_cff import jetToolbox process.myJetSequence = cms.Sequence() JEC = ['L1FastJet','L2Relative','L3Absolute'] if not isMC: JEC += ['L2L3Residual'] jetToolbox( process, 'ak4', 'myJetSequence', 'outTemp', JETCorrPayload='AK4PFchs', JETCorrLevels = JEC, miniAOD=True, runOnMC=isMC, addNsub=True, # was True #addPUJetID=False, #bTagDiscriminators = ['pfTrackCountingHighEffBJetTags','pfTrackCountingHighPurBJetTags','pfJetProbabilityBJetTags','pfJetBProbabilityBJetTags','pfSimpleSecondaryVertexHighEffBJetTags','pfSimpleSecondaryVertexHighPurBJetTags','pfCombinedSecondaryVertexV2BJetTags','pfCombinedInclusiveSecondaryVertexV2BJetTags','pfCombinedMVAV2BJetTags'], #bTagDiscriminators = ['pfTrackCountingHighEffBJetTags','pfTrackCountingHighPurBJetTags','pfJetProbabilityBJetTags','pfJetBProbabilityBJetTags','pfSimpleSecondaryVertexHighEffBJetTags','pfSimpleSecondaryVertexHighPurBJetTags','pfCombinedSecondaryVertexV2BJetTags','pfCombinedInclusiveSecondaryVertexV2BJetTags'], #bTagDiscriminators = ['pfTrackCountingHighEffBJetTags','pfTrackCountingHighPurBJetTags','pfJetProbabilityBJetTags','pfJetBProbabilityBJetTags','pfSimpleSecondaryVertexHighEffBJetTags','pfSimpleSecondaryVertexHighPurBJetTags','pfCombinedSecondaryVertexV2BJetTags','pfCombinedInclusiveSecondaryVertexV2BJetTags'], addPUJetID=True, addPruning=False, addTrimming=False, addCMSTopTagger=True, addHEPTopTagger=True, addMassDrop=True, addSoftDrop=False, addQGTagger=True, # addSoftDrop=True ) #, addPrunedSubjets=True ) preSeq += process.myJetSequence # no need to recorrect the jets, since they are reclustered on the fly # the name patJetsAK4PFCHS found looking at the "processDump.py" and looking for patjetproducer # edmConfigDump stepB.py &> processDump.py
##################### # MET Significance # ##################### process.load("RecoMET/METProducers.METSignificance_cfi") process.load("RecoMET/METProducers.METSignificanceParams_cfi") from RecoMET.METProducers.testInputFiles_cff import recoMETtestInputFiles ####################### # AK10 collection # ####################### if options.runAK10: from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox jetToolbox( process, 'ak10', 'ak10JetSubs', 'out', runOnMC=(not options.isData), addPruning=True, addSoftDrop=True , addPrunedSubjets=True, addSoftDropSubjets=True, JETCorrPayload='AK3Pachs', subJETCorrPayload='AK10PFchs', JETCorrLevels=['L1FastJet', 'L2Relative', 'L3Absolute'], addNsub=True, maxTau=6, addTrimming=True, addFiltering=True, addEnergyCorrFunc=True, maxECF=5 ) ####################### # Quark gluon tagging # ####################### if options.runQG: qgDatabaseVersion = 'v2b' # check https://twiki.cern.ch/twiki/bin/viewauth/CMS/QGDataBaseVersion from CondCore.DBCommon.CondDBSetup_cfi import * QGPoolDBESSource = cms.ESSource("PoolDBESSource", CondDBSetup, toGet = cms.VPSet(), connect = cms.string('frontier://FrontierProd/CMS_COND_PAT_000'), )
# vector<reco::GenJet> "selectedPatJetsAK8PFCHS" "genJets" "Ana" # vector<reco::PFCandidate> "selectedPatJetsAK8PFCHS" "pfCandidates" "Ana" jetToolbox( process, 'ak8', 'ak8JetSubs', 'out', runOnMC=isMC, PUMethod='CHS', # updateCollection='slimmedJetsAK8', # can't run groomers on this yet # JETCorrPayload='AK8PFchs', # needed for update collection JETCorrLevels=['None'], subJETCorrLevels=['None'], addSoftDropSubjets=True, addTrimming=True, rFiltTrim=0.2, ptFrac=0.05, addPruning=True, addFiltering=True, addSoftDrop=True, addNsub=True, bTagInfos=listBTagInfos, bTagDiscriminators=listBtagDiscriminatorsAK8, addCMSTopTagger=False, Cut=ak8Cut, addNsubSubjets=True, subjetMaxTau=3) # |---- jetToolBox: JETTOOLBOX RUNNING ON MiniAOD FOR AK8 JETS USING Puppi # |---- jetToolBox: Applying this corrections: ('AK8PFPuppi', ['L2Relative', 'L3Absolute'], 'None')
def addJetToolboxSequences(process, isData, jet_algorithm_specs=('ak4', 'ak8'), pu_subtraction_methods=('', 'CHS'), min_jet_pt=None, do_pu_jet_id=False): # jet collections obtained with 'JetToolbox' CMSSW module: # https://twiki.cern.ch/twiki/bin/viewauth/CMS/JetToolbox from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox _jet_collection_names = [] # go through all combinations of jet radius and PU subtraction algorithms for _jet_algo_radius in jet_algorithm_specs: for _PU_method in pu_subtraction_methods: # -- first, make reco::PFJets using the jet toolbox jetToolbox( process, _jet_algo_radius, "jetToolbox{}{}".format(_jet_algo_radius, _PU_method), 'out', dataTier='miniAOD', runOnMC=not isData, PUMethod=_PU_method, # PU subtraction method #bTagDiscriminators=[], # do not skim btag discriminators addPruning=False, addSoftDrop=False, addPrunedSubjets=False, addNsub=False, maxTau=6, addTrimming=False, addFiltering=False, addNsubSubjets=False, addPUJetID=do_pu_jet_id, verbosity=2) # -- next, configure pT threshold for reco::PFJets if min_jet_pt is not None: _reco_pfjet_module = getattr( process, "{}PFJets{}".format(_jet_algo_radius, _PU_method)) _reco_pfjet_module.jetPtMin = min_jet_pt # doesn't seem to work # # add PUJetID calculator and evaluator to process # if _do_PUJetID: # process.path *= getattr(process, "{}PF{}pileupJetIdCalculator".format(_jet_algo_radius.upper(), _PU_method)) # process.path *= getattr(process, "{}PF{}pileupJetIdEvaluator".format(_jet_algo_radius.upper(), _PU_method)) # -- then, make pat::Jets patJetCollectionName = "{}PF{}".format(_jet_algo_radius.upper(), _PU_method) assert not hasattr(process, patJetCollectionName) _seq_data = cms.Sequence() for _tag in JET_TAG_LIST_FOR_DATA: try: _seq_data *= getattr( process, "{}{}".format(_tag, patJetCollectionName)) except AttributeError as _err: print( "[karmaJetToolbox] WARNING: Not adding jet tag '{}' to '{}' jets due to error: {}" .format(_tag, patJetCollectionName, _err)) if not isData: _seq_mc = cms.Sequence( getattr(process, "patJetPartons") * getattr( process, "patJetFlavourAssociation{}".format( patJetCollectionName)) * getattr(process, "patJetPartonMatch{}".format(patJetCollectionName)) * getattr( process, "patJetGenJetMatch{}".format(patJetCollectionName))) patSequence = cms.Sequence( _seq_data * _seq_mc * getattr( process, "patJets{}".format(patJetCollectionName)) * getattr(process, "selectedPatJets{}".format(patJetCollectionName))) else: patSequence = cms.Sequence( _seq_data * getattr( process, "patJets{}".format(patJetCollectionName)) * getattr(process, "selectedPatJets{}".format(patJetCollectionName))) if min_jet_pt is not None: _pat_jet_module = getattr( process, "selectedPatJets{}".format(patJetCollectionName)) _pat_jet_module.cut = "pt()>{:f}".format(min_jet_pt) print "[karmaJetToolbox] Add pat::Jet collection '{}'".format( patJetCollectionName) _jet_collection_names.append( "selectedPatJets{}".format(patJetCollectionName)) # cleanup unused modules added by jet toolbox del process.out # jettoolbox test rootfile # associate all tasks on the endpath with the path and remove the endpath for _task in process.endpath._tasks: process.paths['path'].associate(_task) del process.endpath return _jet_collection_names
listBtagDiscriminators = [ 'pfTrackCountingHighEffBJetTags', 'pfTrackCountingHighPurBJetTags', 'pfJetProbabilityBJetTags', 'pfJetBProbabilityBJetTags', 'pfSimpleSecondaryVertexHighEffBJetTags', 'pfSimpleSecondaryVertexHighPurBJetTags', 'pfCombinedSecondaryVertexV2BJetTags', 'pfCombinedInclusiveSecondaryVertexV2BJetTags', 'pfBoostedDoubleSecondaryVertexAK8BJetTags' ] ak4Cut='pt > 25 && abs(eta) < 5.' ak8Cut='pt > 100 && abs(eta) < 5.' if "MC" in options.DataProcessing: jetToolbox( process, 'ak4', 'analysisPath', 'edmNtuplesOut', addQGTagger=True, bTagDiscriminators=listBtagDiscriminators, Cut=ak4Cut ) jetToolbox( process, 'ak8', 'analysisPath', 'edmNtuplesOut', addSoftDropSubjets=True, addTrimming=True, rFiltTrim=0.1, addPruning=True, addFiltering=True, addSoftDrop=True, addNsub=True, bTagDiscriminators=listBtagDiscriminators, Cut=ak8Cut ) jetToolbox( process, 'ca8', 'analysisPath', 'edmNtuplesOut', addCMSTopTagger=True, bTagDiscriminators=listBtagDiscriminators, Cut=ak8Cut ) jetToolbox( process, 'ak8', 'analysisPath', 'edmNtuplesOut', PUMethod='Puppi', addSoftDropSubjets=True, addTrimming=True, addPruning=True, addFiltering=True, addSoftDrop=True, addNsub=True, bTagDiscriminators=listBtagDiscriminators, Cut=ak8Cut ) else: jetToolbox( process, 'ak4', 'analysisPath', 'edmNtuplesOut', runOnMC=False, addQGTagger=True, bTagDiscriminators=listBtagDiscriminators, Cut=ak4Cut ) jetToolbox( process, 'ak8', 'analysisPath', 'edmNtuplesOut', runOnMC=False, addSoftDropSubjets=True, addTrimming=True, rFiltTrim=0.1, addPruning=True, addFiltering=True, addSoftDrop=True, addNsub=True, bTagDiscriminators=listBtagDiscriminators, Cut=ak8Cut ) jetToolbox( process, 'ca8', 'analysisPath', 'edmNtuplesOut', runOnMC=False, addCMSTopTagger=True, bTagDiscriminators=listBtagDiscriminators, Cut=ak8Cut ) jetToolbox( process, 'ak8', 'analysisPath', 'edmNtuplesOut', runOnMC=False, PUMethod='Puppi', addSoftDropSubjets=True, addTrimming=True, addPruning=True, addFiltering=True, addSoftDrop=True, addNsub=True, bTagDiscriminators=listBtagDiscriminators, Cut=ak8Cut ) jLabelAK8 = 'selectedPatJetsAK8PFCHS' jLabelAK8Puppi = 'selectedPatJetsAK8PFPuppi' jLabel = 'selectedPatJetsAK4PFCHS' jLabelNoHF = 'selectedPatJetsAK4PFCHS'
process.load("PhysicsTools.PatAlgos.producersLayer1.patCandidates_cff") process.load("Configuration.EventContent.EventContent_cff") process.load('Configuration.StandardSequences.GeometryDB_cff') process.load('Configuration.StandardSequences.MagneticField_38T_cff') process.load('Configuration.StandardSequences.Services_cff') process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_condDBv2_cff') process.GlobalTag.globaltag = options.globalTag from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox from RecoJets.JetProducers.SubJetParameters_cfi import SubJetParameters from RecoJets.JetProducers.ak4GenJets_cfi import ak4GenJets if ( options.isData ): jetToolbox( process, 'ak8', 'analysisPath', 'edmNtuplesOut', runOnMC=False, PUMethod='Puppi', addSoftDropSubjets=True, addPrunedSubjets=True, addTrimming=True, addPruning=True, addFiltering=True, addSoftDrop=True, addNsub=True ) jetToolbox( process, 'ak8', 'analysisPath', 'edmNtuplesOut', runOnMC=False, PUMethod='SK', addSoftDropSubjets=True, addPrunedSubjets=True, addTrimming=True, addPruning=True, addFiltering=True, addSoftDrop=True, addNsub=True ) jetToolbox( process, 'ak8', 'analysisPath', 'edmNtuplesOut', runOnMC=False, addSoftDropSubjets=True, addPrunedSubjets=True, addTrimming=True, addPruning=True, addFiltering=True, addSoftDrop=True, addNsub=True ) jetToolbox( process, 'ca8', 'analysisPath', 'edmNtuplesOut', runOnMC=False, addCMSTopTagger=True ) else: jetToolbox( process, 'ak8', 'analysisPath', 'edmNtuplesOut', PUMethod='Puppi', addSoftDropSubjets=True, addPrunedSubjets=True, addTrimming=True, addPruning=True, addFiltering=True, addSoftDrop=True, addNsub=True ) jetToolbox( process, 'ak8', 'analysisPath', 'edmNtuplesOut', PUMethod='SK', addSoftDropSubjets=True, addPrunedSubjets=True, addTrimming=True, addPruning=True, addFiltering=True, addSoftDrop=True, addNsub=True ) jetToolbox( process, 'ak8', 'analysisPath', 'edmNtuplesOut', addSoftDropSubjets=True, addPrunedSubjets=True, addTrimming=True, addPruning=True, addFiltering=True, addSoftDrop=True, addNsub=True ) jetToolbox( process, 'ca8', 'analysisPath', 'edmNtuplesOut', addCMSTopTagger=True ) jLabelAK8 = 'selectedPatJetsAK8PFCHS' ### Selected leptons and jets process.skimmedPatMuons = cms.EDFilter( "PATMuonSelector", src = cms.InputTag(muLabel), cut = cms.string("pt > 10 && abs(eta) < 2.4")
#### THERE ARE JUST TO TEST SEVERAL FEATURES OF THE JETTOOLBOX. ####################################################################### from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox #jetToolbox( process, 'ak8', 'ak8JetSubs', 'out', PUMethod='Puppi', addPruning=True, addSoftDrop=True , addPrunedSubjets=True, addSoftDropSubjets=True, addNsub=True, maxTau=6, addTrimming=True, addFiltering=True , JETCorrPayload='AK8PFchs', subJETCorrPayload='AK4PFchs', subJETCorrLevels=['L2Relative', 'L3Absoulte'] ) #, Cut='pt > 100 && abs(eta) < 2.4' ) #jetToolbox( process, 'ak8', 'ak8JetSubs', 'out', PUMethod='SK', addPruning=True, addSoftDrop=True , addPrunedSubjets=True, addSoftDropSubjets=True, addNsub=True, maxTau=6, addTrimming=True, addFiltering=True, JETCorrLevels=['L1FastJet', 'L2Relative'] ) #jetToolbox( process, 'ak8', 'ak8JetSubs', 'out', PUMethod='CS', addPruning=True, addSoftDrop=True , addPrunedSubjets=True, addSoftDropSubjets=True, addNsub=True, maxTau=6, addTrimming=True, addFiltering=True ) jetToolbox(process, 'ak8', 'ak8JetSubs', 'out', addPruning=True, addSoftDrop=True, addPrunedSubjets=True, addSoftDropSubjets=True, addNsub=True, maxTau=6, addTrimming=True, addFiltering=True, JETCorrPayload='AK3Pachs', subJETCorrPayload='AK8PFchs', JETCorrLevels=['L1FastJet', 'L2Relative'], addEnergyCorrFunc=True, maxECF=5) # #jetToolbox( process, 'ca8', 'ca8JetSubs', 'out', PUMethod='Puppi', addCMSTopTagger=True, addMassDrop=True, addSoftDrop=True ) #jetToolbox( process, 'ca8', 'ca8JetSubs', 'out', PUMethod='SK', addCMSTopTagger=True, addMassDrop=True, addSoftDrop=True, JETCorrPayload='AK8PF' ) #jetToolbox( process, 'ca8', 'ca8JetSubs', 'out', PUMethod='CS', addCMSTopTagger=True, addMassDrop=True, addSoftDrop=True, JETCorrLevels=['L2Relative'] ) #jetToolbox( process, 'ca8', 'ca8JetSubs', 'out', addCMSTopTagger=True, addMassDrop=True, addSoftDrop=True ) #jetToolbox( process, 'ca8', 'ca8JetSubs', 'out', addCMSTopTagger=True, addMassDrop=True, addSoftDrop=True, JETCorrPayload='AK8PFchs', JETCorrLevels=['L3Absolute'] ) #jetToolbox( process, 'ca12', 'ca12JetSubs', 'out', PUMethod='Puppi', addHEPTopTagger=True, addSoftDrop=True )
def jettoolbox_settings( process , runMC ): process.load('CommonTools/PileupAlgos/Puppi_cff') process.puppi.candName = cms.InputTag('packedPFCandidates') process.puppi.vertexName = cms.InputTag('offlineSlimmedPrimaryVertices') process.puppi.useExistingWeights = cms.bool(True) jetToolbox( process, 'ak4', 'analysisPath', 'edmOut', runOnMC = runMC, addQGTagger = True, bTagInfos = listBTagInfos, bTagDiscriminators = listBtagDiscriminators, Cut = ak4Cut ) #jetToolbox( process, 'ak4', 'analysisPath', 'edmOut', # runOnMC=runMC, # PUMethod='Puppi', # newPFCollection=True, # nameNewPFCollection='puppi', # bTagInfos=listBTagInfos, # bTagDiscriminators=listBtagDiscriminators, # Cut=ak4Cut ) jetToolbox( process, 'ak8', 'analysisPath', 'edmOut', runOnMC = runMC, addSoftDropSubjets = True, addTrimming = True, rFiltTrim = 0.1, addPruning = True, addFiltering = True, addSoftDrop = True, addNsub = True, bTagInfos = listBTagInfos, bTagDiscriminators = listBtagDiscriminators, addCMSTopTagger = True, Cut = ak8Cut , addNsubSubjets = True, subjetMaxTau = 4 ) #jetToolbox( process, 'ak8', 'analysisPath', 'edmOut', # runOnMC=runMC, # PUMethod='Puppi', # newPFCollection=True, # nameNewPFCollection='puppi', # addSoftDropSubjets=True, # addTrimming=True, # addPruning=True, # addFiltering=True, # addSoftDrop=True, # addNsub=True, # bTagInfos=listBTagInfos, # bTagDiscriminators=listBtagDiscriminators, # addCMSTopTagger=True, # Cut=ak8Cut, # addNsubSubjets=True, # subjetMaxTau=4 # ) jetToolbox( process, 'ca8', 'analysisPath', 'edmOut', runOnMC = runMC , addMassDrop = True, addCMSTopTagger = True, GetJetMCFlavour = True, GetSubjetMCFlavour = True, bTagDiscriminators = listBtagDiscriminators , Cut = '' )
option = 'RECO' process.load("ExoDiBosonResonances.EDBRCommon.goodMuons_cff") process.load("ExoDiBosonResonances.EDBRCommon.goodElectrons_cff") process.load("ExoDiBosonResonances.EDBRCommon.goodJets_cff") process.load("ExoDiBosonResonances.EDBRCommon.leptonicW_cff") process.load("ExoDiBosonResonances.EDBRCommon.hadronicW_cff") process.load("ExoDiBosonResonances.EDBRCommon.goodPuppi_cff") from JMEAnalysis.JetToolbox.jetToolbox_cff import jetToolbox JETCorrLevels = ['L2Relative', 'L3Absolute', 'L2L3Residual'] jetToolbox(process, 'ak8', 'dummySeqAK8', 'noOutput', PUMethod='Puppi', JETCorrPayload='AK8PFPuppi', JETCorrLevels=JETCorrLevels, Cut='pt > 170.0 && abs(rapidity()) < 2.4', dataTier='miniAOD', runOnMC=runOnMC, addSoftDrop=True, addNsub=True,addSoftDropSubjets=True, subJETCorrPayload='AK4PFPuppi', subJETCorrLevels=JETCorrLevels # must add soft-drop ) from PhysicsTools.PatAlgos.tools.jetTools import updateJetCollection from RecoBTag.MXNet.pfDeepBoostedJet_cff import _pfDeepBoostedJetTagsProbs,_pfDeepBoostedJetTagsMetaDiscrs,_pfMassDecorrelatedDeepBoostedJetTagsProbs,_pfMassDecorrelatedDeepBoostedJetTagsMetaDiscrs #use the v2 training : https://twiki.cern.ch/twiki/bin/viewauth/CMS/DeepAKXTagging#Additional_instructions_to_run_D from RecoBTag.MXNet.pfDeepBoostedJet_cff import pfDeepBoostedJetTags, pfMassDecorrelatedDeepBoostedJetTags from RecoBTag.MXNet.Parameters.V02.pfDeepBoostedJetPreprocessParams_cfi import pfDeepBoostedJetPreprocessParams as pfDeepBoostedJetPreprocessParamsV02 from RecoBTag.MXNet.Parameters.V02.pfMassDecorrelatedDeepBoostedJetPreprocessParams_cfi import pfMassDecorrelatedDeepBoostedJetPreprocessParams as pfMassDecorrelatedDeepBoostedJetPreprocessParamsV02 pfDeepBoostedJetTags.preprocessParams = pfDeepBoostedJetPreprocessParamsV02 pfDeepBoostedJetTags.model_path = 'RecoBTag/Combined/data/DeepBoostedJet/V02/full/resnet-symbol.json' pfDeepBoostedJetTags.param_path = 'RecoBTag/Combined/data/DeepBoostedJet/V02/full/resnet-0000.params' pfMassDecorrelatedDeepBoostedJetTags.preprocessParams = pfMassDecorrelatedDeepBoostedJetPreprocessParamsV02 pfMassDecorrelatedDeepBoostedJetTags.model_path = 'RecoBTag/Combined/data/DeepBoostedJet/V02/decorrelated/resnet-symbol.json' pfMassDecorrelatedDeepBoostedJetTags.param_path = 'RecoBTag/Combined/data/DeepBoostedJet/V02/decorrelated/resnet-0000.params'
'pfTrackCountingHighEffBJetTags', 'pfTrackCountingHighPurBJetTags', 'pfJetProbabilityBJetTags', 'pfJetBProbabilityBJetTags', 'pfSimpleSecondaryVertexHighEffBJetTags', 'pfSimpleSecondaryVertexHighPurBJetTags', 'pfCombinedSecondaryVertexV2BJetTags', 'pfCombinedInclusiveSecondaryVertexV2BJetTags', 'pfBoostedDoubleSecondaryVertexAK8BJetTags' ] ak4Cut = 'pt > 25 && abs(eta) < 5.' ak8Cut = 'pt > 100 && abs(eta) < 5.' if "MC" in options.DataProcessing: jetToolbox(process, 'ak4', 'analysisPath', 'edmNtuplesOut', addQGTagger=True, bTagDiscriminators=listBtagDiscriminators, Cut=ak4Cut) jetToolbox(process, 'ak8', 'analysisPath', 'edmNtuplesOut', addSoftDropSubjets=True, addTrimming=True, rFiltTrim=0.1, addPruning=True, addFiltering=True, addSoftDrop=True, addNsub=True, bTagDiscriminators=listBtagDiscriminators,