run_muonAnalyzer_cfg.py
unknown
python
4 years ago
9.0 kB
4
Indexable
'''Author: g. karathanasis. georgios.karathanasis@cern.ch cfg to run tag and probe ntuple for muon POG. It runs both on AOD and miniAOD Modified by Andre Frankenthal (a.franken@cern.ch) -- September 2020 usage: cmsRun run_muonAnalyzer_cfg.py option1=value1 option2=value2 ''' from FWCore.ParameterSet.VarParsing import VarParsing import FWCore.ParameterSet.Config as cms options = VarParsing('python') options.register('resonance', 'Z', VarParsing.multiplicity.singleton, VarParsing.varType.string, "Set resonance ('Z'/'JPsi')" ) options.register('isFullAOD', True, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "Set to False for MiniAOD datatier" ) options.register('isMC', False, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "Set to True for MC" ) options.register('globalTag', '', VarParsing.multiplicity.singleton, VarParsing.varType.string, "Set global tag" ) options.register('reportEvery', 1000, VarParsing.multiplicity.singleton, VarParsing.varType.int, "Report frequency" ) options.register('numThreads', 1, VarParsing.multiplicity.singleton, VarParsing.varType.int, "Number of CMSSW threads" ) # this parameter is added for Jet Branches (ID varies for different era) options.register('era', 'Run2018', VarParsing.multiplicity.singleton, VarParsing.varType.string, "era" ) options.register('includeJets', False, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "Set to False to exclude jets information in output ntuples" ) options.register('fromCRAB', False, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "Is config run from CRAB" ) options.parseArguments() # defaults if options.fromCRAB == True: options.maxEvents = -1 else: options.maxEvents = 100 if options._beenSet['globalTag'] and options.globalTag != '': globaltag = options.globalTag else: globaltag = '80X_dataRun2_2016SeptRepro_v7' if not options.isMC else '80X_mcRun2_asymptotic_2016_TrancheIV_v8' # Run local test if no input files provided if len(options.inputFiles) == 0: if options.resonance == 'Z': if options.isFullAOD: if options.isMC: options.inputFiles.append('/store/mc/RunIIAutumn18DRPremix/DYJetsToLL_M-50_TuneCP5_13TeV-madgraphMLM-pythia8/AODSIM/102X_upgrade2018_realistic_v15-v1/80002/FF9AF238-78B6-CF48-BC7C-05025D85A45C.root') else: options.inputFiles.append('/store/data/Run2018C/SingleMuon/AOD/17Sep2018-v1/60004/FB123080-071C-F64D-BAFD-F2F292F7FC64.root') else: if options.isMC: options.inputFiles.append('/store/mc/RunIIAutumn18MiniAOD/DYJetsToLL_M-50_Zpt-150toInf_TuneCP5_13TeV-madgraphMLM-pythia8/MINIAODSIM/102X_upgrade2018_realistic_v15-v1/100000/FAACE9E0-1D0E-204E-9960-078F095EA34C.root') else: options.inputFiles.append('/store/data/Run2018D/SingleMuon/MINIAOD/PromptReco-v2/000/325/159/00000/BE9BB28C-8AEC-1B4B-A7BD-AD1C9A0D67A8.root') elif options.resonance == 'JPsi': if options.isFullAOD: if options.isMC: #options.inputFiles.append('/store/mc/RunIIAutumn18DRPremix/JpsiToMuMu_JpsiPt8_TuneCP5_13TeV-pythia8/AODSIM/102X_upgrade2018_realistic_v15-v1/270001/FFF2FC1D-18CB-7244-9663-4E36963494B7.root') options.inputFiles.append('/store/mc/RunIISummer16DR80Premix/JpsiToMuMu_JpsiPt8_TuneCUEP8M1_13TeV-pythia8/AODSIM/PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6-v1/90000/2E711048-37C5-E611-9AA5-24BE05C63741.root') else: options.inputFiles.append('/store/data/Run2016H/Charmonium/AOD/07Aug17-v1/10000/0003E4A7-F19A-E711-963D-1866DAEA8178.root') if options.outputFile=="": options.outputFile="output" if options.isMC: options.outputFile+="_mc" else: options.outputFile+="_data" if options.isFullAOD: options.outputFile+="_full" else: options.outputFile+="_mini" options.outputFile+=".root" process = cms.Process("MuonAnalysis") process.load("FWCore.MessageService.MessageLogger_cfi") process.load("Configuration.StandardSequences.GeometryRecoDB_cff") process.load("Configuration.StandardSequences.MagneticField_cff") process.load("TrackingTools/TransientTrack/TransientTrackBuilder_cfi") process.load("Configuration.StandardSequences.Reconstruction_cff") process.load('Configuration.StandardSequences.EndOfProcess_cff') process.MessageLogger.cerr.FwkReport.reportEvery = options.reportEvery process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff") from Configuration.AlCa.GlobalTag import GlobalTag process.GlobalTag = GlobalTag(process.GlobalTag,globaltag, '') process.maxEvents = cms.untracked.PSet(input = cms.untracked.int32(options.maxEvents)) process.source = cms.Source("PoolSource", fileNames = cms.untracked.vstring(options.inputFiles), secondaryFileNames=cms.untracked.vstring(), inputCommands=cms.untracked.vstring( 'keep *', 'drop *_ctppsPixelClusters_*_*' ) ) if options.includeJets: # for b-tagging process.load("RecoBTag.ImpactParameter.impactParameter_cff") process.load("RecoBTag.SecondaryVertex.secondaryVertex_cff") process.load("RecoBTag.SoftLepton.softLepton_cff") process.load("RecoBTag.Combined.combinedMVA_cff") process.load("RecoBTag.CTagging.cTagging_cff") process.load("RecoBTag.Combined.deepFlavour_cff") process.load("JetMETCorrections.Configuration.JetCorrectors_cff") process.options = cms.untracked.PSet( wantSummary = cms.untracked.bool(True), numberOfThreads = cms.untracked.uint32(options.numThreads) ) from MuonAnalysis.MuonAnalyzer.tools.ntuple_tools import * if options.isFullAOD: if options.resonance == 'Z': process = muonAnalysis_customizeFullAOD_Z(process) else: process = muonAnalysis_customizeFullAOD_JPsi(process) if not options.isMC: process.muon.jetCorrector = cms.InputTag( "ak4PFCHSL1FastL2L3ResidualCorrector") else: if options.resonance == 'Z': process = muonAnalysis_customizeMiniAOD_Z(process) else: process = muonAnalysis_customizeMiniAOD(process) process.muon.isMC = options.isMC process.muon.includeJets = options.includeJets process.muon.era = options.era # Trigger matching muonSrc = "muons" if options.isFullAOD else "slimmedMuons" from MuonAnalysis.MuonAssociators.muonL1Match_cfi import muonL1Match as _muonL1Match process.muonL1Info = _muonL1Match.clone( src = cms.InputTag(muonSrc), useMB2InOverlap = cms.bool(True), useStage2L1 = cms.bool(True), preselection = cms.string(""), matched = cms.InputTag("gmtStage2Digis:Muon:") ) process.muonL1InfoByQ = process.muonL1Info.clone( sortBy = cms.string("quality"), sortByQuality = cms.bool(True), sortByDeltaPhi = cms.bool(False), sortByDeltaEta = cms.bool(False), sortByPt = cms.bool(False) ) from MuonAnalysis.MuonAnalyzer.hltInfo_cff import getHLTInfo, selectTriggers hltInfo = getHLTInfo(options.resonance, options.era) excludeDSA = (not options.isFullAOD) process.muon.triggerPaths = cms.vstring(selectTriggers(hltInfo['triggerPaths'], True, False, excludeDSA)) process.muon.tagFilters = cms.vstring(selectTriggers(hltInfo['tagFilters'], not options.isFullAOD, True, excludeDSA)) process.muon.probeFilters = cms.vstring(selectTriggers(hltInfo['probeFilters'], not options.isFullAOD, True, excludeDSA)) # Standard selectors from MuonAnalysis.MuonAnalyzer.selectorInfo_cff import getSelectorNamesAndBits selectorNames, selectorBits = getSelectorNamesAndBits(options.era, options.isFullAOD) process.muon.probeSelectorNames = cms.vstring(selectorNames) process.muon.probeSelectorBits = cms.vuint32(selectorBits) if options.includeJets: if not options.isMC: process.analysis_step = cms.Path( process.muonL1Info + process.muonL1InfoByQ + process.ak4PFCHSL1FastL2L3ResidualCorrectorChain + process.muSequence ) else: process.analysis_step = cms.Path( process.muonL1Info + process.muonL1InfoByQ + process.ak4PFCHSL1FastL2L3CorrectorChain + process.muSequence ) else: process.analysis_step = cms.Path( process.muonL1Info + process.muonL1InfoByQ + process.muSequence ) process.TFileService = cms.Service("TFileService", fileName = cms.string(options.outputFile) ) process.endjob_step = cms.EndPath(process.endOfProcess) # process.fevt = cms.OutputModule("PoolOutputModule", # outputCommands = cms.untracked.vstring(), # fileName = cms.untracked.string("edm_output.root") # ) process.schedule = cms.Schedule(process.analysis_step, process.endjob_step) from Configuration.StandardSequences.earlyDeleteSettings_cff import customiseEarlyDelete process = customiseEarlyDelete(process)
Editor is loading...