import FWCore.ParameterSet.Config as cms from FWCore.ParameterSet.VarParsing import VarParsing options = VarParsing('analysis') options.register('isMC', True, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "True if is MC dataset") options.register('runRandomTrack', False, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "True if is studying random track efficiency") options.register('runLocally', False, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "True if running locally") options.register('isSig', False, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "True if using signal injected events") options.register('hasDpho', False, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "True if dark brem particle is present") options.parseArguments() process = cms.Process("TEST") process.load("FWCore.MessageService.MessageLogger_cfi") process.MessageLogger.cerr.FwkReport.reportEvery = 1000 process.load("TrackingTools/TransientTrack/TransientTrackBuilder_cfi") process.load('Configuration.StandardSequences.GeometryRecoDB_cff')
# coding: utf-8 import os import math import FWCore.ParameterSet.Config as cms from FWCore.ParameterSet.VarParsing import VarParsing from reco_prodtools.templates.GSDfineCalo_fragment import process # option parsing options = VarParsing('python') options.setDefault('outputFile', 'file:partGun_PDGid22_x96_Pt1.0To100.0_GSD_1.root') options.setDefault('maxEvents', 1) options.register("pileup", 0, VarParsing.multiplicity.singleton, VarParsing.varType.int, "pileup") options.register("seed", 1, VarParsing.multiplicity.singleton, VarParsing.varType.int, "random seed") options.register("nThreads", 1, VarParsing.multiplicity.singleton, VarParsing.varType.int, "number of threads") options.register("nParticles", 10, VarParsing.multiplicity.singleton, VarParsing.varType.int, "number of particles in gun") options.parseArguments() process.maxEvents.input = cms.untracked.int32(options.maxEvents) seed = int(options.seed) + 1 # random seeds process.RandomNumberGeneratorService.generator.initialSeed = cms.untracked.uint32( seed) process.RandomNumberGeneratorService.VtxSmeared.initialSeed = cms.untracked.uint32(
import FWCore.ParameterSet.Config as cms from FWCore.ParameterSet.VarParsing import VarParsing defaults = { "mineta": -3., "maxeta": 3., "minphi": -3.14159265359, "maxphi": 3.14159265359, } options = VarParsing("analysis") options.register("particle", "electron", VarParsing.multiplicity.singleton, VarParsing.varType.string) options.register("mult", 1, VarParsing.multiplicity.singleton, VarParsing.varType.int) # number of particles options.register("minenergy", 1, VarParsing.multiplicity.singleton, VarParsing.varType.float) options.register("maxenergy", 0, VarParsing.multiplicity.singleton, VarParsing.varType.float) options.register("mineta", defaults["mineta"], VarParsing.multiplicity.singleton, VarParsing.varType.float) options.register("maxeta", defaults["maxeta"], VarParsing.multiplicity.singleton, VarParsing.varType.float) options.register("minphi", defaults["minphi"], VarParsing.multiplicity.singleton, VarParsing.varType.float) options.register("maxphi", defaults["maxphi"], VarParsing.multiplicity.singleton, VarParsing.varType.float) options.register("maxEventsIn", -1, VarParsing.multiplicity.singleton, VarParsing.varType.int) options.register("output", True, VarParsing.multiplicity.singleton, VarParsing.varType.bool)
import os, sys, json # module/model correspondence models = { "TritonImageProducer": ["inception_graphdef", "densenet_onnx"], "TritonGraphProducer": ["gat_test"], "TritonGraphFilter": ["gat_test"], "TritonGraphAnalyzer": ["gat_test"], } # other choices allowed_modes = ["Async","PseudoAsync","Sync"] allowed_compression = ["none","deflate","gzip"] allowed_devices = ["auto","cpu","gpu"] options = VarParsing() options.register("maxEvents", -1, VarParsing.multiplicity.singleton, VarParsing.varType.int, "Number of events to process (-1 for all)") options.register("serverName", "default", VarParsing.multiplicity.singleton, VarParsing.varType.string, "name for server (used internally)") options.register("address", "", VarParsing.multiplicity.singleton, VarParsing.varType.string, "server address") options.register("port", 8001, VarParsing.multiplicity.singleton, VarParsing.varType.int, "server port") options.register("timeout", 30, VarParsing.multiplicity.singleton, VarParsing.varType.int, "timeout for requests") options.register("params", "", VarParsing.multiplicity.singleton, VarParsing.varType.string, "json file containing server address/port") options.register("threads", 1, VarParsing.multiplicity.singleton, VarParsing.varType.int, "number of threads") options.register("streams", 0, VarParsing.multiplicity.singleton, VarParsing.varType.int, "number of streams") options.register("modules", "TritonGraphProducer", VarParsing.multiplicity.list, VarParsing.varType.string, "list of modules to run (choices: {})".format(', '.join(models))) options.register("models","gat_test", VarParsing.multiplicity.list, VarParsing.varType.string, "list of models (same length as modules, or just 1 entry if all modules use same model)") options.register("mode","Async", VarParsing.multiplicity.singleton, VarParsing.varType.string, "mode for client (choices: {})".format(', '.join(allowed_modes))) options.register("verbose", False, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "enable verbose output") options.register("brief", False, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "briefer output for graph modules") options.register("fallbackName", "", VarParsing.multiplicity.singleton, VarParsing.varType.string, "name for fallback server") options.register("unittest", False, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "unit test mode: reduce input sizes")
import os import FWCore.ParameterSet.Config as cms # Set parameters externally from FWCore.ParameterSet.VarParsing import VarParsing params = VarParsing('analysis') params.register( 'skipEvents', 0, VarParsing.multiplicity.singleton,VarParsing.varType.int, 'Path of local input files' ) params.register( 'reportFreq', 100, VarParsing.multiplicity.singleton,VarParsing.varType.int, 'Path of local input files' ) params.register( 'localDatasetPath', '', VarParsing.multiplicity.singleton,VarParsing.varType.string, 'Path of local input files' ) params.register( 'Dataset', '',
# coding: utf-8 import os import FWCore.ParameterSet.Config as cms from FWCore.ParameterSet.VarParsing import VarParsing # get the data/ directory thisdir = os.path.dirname(os.path.abspath(__file__)) datadir = os.path.join(os.path.dirname(thisdir), "data") # setup minimal options options = VarParsing("python") options.setDefault( "inputFiles", "root://xrootd-cms.infn.it//store/mc/RunIIFall17MiniAOD/DYJetsToLL_M-10to50_TuneCP5_13TeV-madgraphMLM-pythia8/MINIAODSIM/94X_mc2017_realistic_v10-v2/00000/9A439935-1FFF-E711-AE07-D4AE5269F5FF.root" ) # noqa options.parseArguments() # define the process to run process = cms.Process("TEST") # minimal configuration process.load("FWCore.MessageService.MessageLogger_cfi") process.MessageLogger.cerr.FwkReport.reportEvery = 1 process.maxEvents = cms.untracked.PSet(input=cms.untracked.int32(10)) process.source = cms.Source("PoolSource", fileNames=cms.untracked.vstring( options.inputFiles)) # process options
def configureJetMetNtuple(process): # Options parsing # ################### from FWCore.ParameterSet.VarParsing import VarParsing options = VarParsing('analysis') options.register('applyMETFilters', True, VarParsing.multiplicity.singleton, VarParsing.varType.bool, 'Apply MET filters') options.register('runJets', False, VarParsing.multiplicity.singleton, VarParsing.varType.bool, 'Store Jet Variables') process.load('RecoMET.METFilters.BadChargedCandidateFilter_cfi') process.BadChargedCandidateFilter.muons = cms.InputTag("slimmedMuons") process.BadChargedCandidateFilter.PFCandidates = cms.InputTag( "packedPFCandidates") process.load('RecoMET.METFilters.BadPFMuonFilter_cfi') process.BadPFMuonFilter.muons = cms.InputTag("slimmedMuons") process.BadPFMuonFilter.PFCandidates = cms.InputTag("packedPFCandidates") # Electron ID ========================================================================================== #from PhysicsTools.SelectorUtils.tools.vid_id_tools import * # turn on VID producer, indicate data format to be # DataFormat.AOD or DataFormat.MiniAOD, as appropriate useAOD = False if useAOD == True: dataFormat = DataFormat.AOD else: dataFormat = DataFormat.MiniAOD switchOnVIDElectronIdProducer(process, dataFormat) # define which IDs we want to produce #my_id_modules = [#'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Spring15_25ns_V1_cff', # 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Summer16_80X_V1_cff', #'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring15_25ns_Trig_V1_cff', #'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring15_25ns_nonTrig_V1_cff', # 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring16_GeneralPurpose_V1_cff' # ] # define which IDs we want to produce my_id_modules = [ #'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Spring15_25ns_V1_cff', #'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Summer16_80X_V1_cff', #'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring15_25ns_Trig_V1_cff', #'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring15_25ns_nonTrig_V1_cff', #'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring16_GeneralPurpose_V1_cff', #'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_noIso_V1_cff', 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_iso_V1_cff', 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Fall17_94X_V1_cff', ] #add them to the VID producer for idmod in my_id_modules: setupAllVIDIdsInModule(process, idmod, setupVIDElectronSelection) ### END Electron ID ==================================================================================== process.hltJetMetNtuple = cms.EDAnalyzer( 'hltAnalyzer', #'HLTJetMETNtupleProducer', # runJets = cms.bool(options.runJets), # isData = cms.bool(True), # PVCollectionTag = cms.InputTag("offlineSlimmedPrimaryVertices"), #MetCollectionTag = cms.InputTag('slimmedMETs'), #GenMetCollectionTag = cms.InputTag('genMetTrue'), #applyMETFilters = cms.bool(options.applyMETFilters), # BadMuonFilter = cms.InputTag("BadPFMuonFilter",""), #BadChargedCandidateFilter = cms.InputTag("BadChargedCandidateFilter",""), MuonCollectionTag=cms.InputTag('hltMuons'), #ElectronCollectionTag = cms.InputTag('slimmedElectrons'), #PFJetCollectionTag = cms.InputTag('slimmedJets'), #CaloJetCollectionTag = cms.InputTag('slimmedCaloJets'), #GenJetCollectionTag = cms.InputTag('slimmedGenJets'), #HLTPFJetCollectionTag = cms.InputTag('hltAK4PFJetsCorrected'), # HLTCaloJetCollectionTag = cms.InputTag('hltAK4CaloJetsCorrected'), #HLTPFMetCollectionTag = cms.InputTag('hltPFMETProducer'), HLTCaloMetCollectionTag=cms.InputTag('hltMET'), #HLTCaloMetCollectionTag = cms.InputTag('hltCaloMETMuon'), #eleVetoIdMap = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-veto"), #eleLooseIdMap = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-loose"), #eleMediumIdMap = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-medium"), #eleTightIdMap = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-tight"), #eleMvaNonTrigIdWP80Map = cms.InputTag("egmGsfElectronIDs:mvaEleID-Spring15-25ns-nonTrig-V1-wp80"), #eleMvaNonTrigIdWP90Map = cms.InputTag("egmGsfElectronIDs:mvaEleID-Spring15-25ns-nonTrig-V1-wp90"), #eleMvaTrigIdWP80Map = cms.InputTag("egmGsfElectronIDs:mvaEleID-Spring15-25ns-Trig-V1-wp80"), #eleMvaTrigIdWP90Map = cms.InputTag("egmGsfElectronIDs:mvaEleID-Spring15-25ns-Trig-V1-wp90"), #mvaNonTrigValuesMap = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring15NonTrig25nsV1Values"), #mvaNonTrigCategoriesMap = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring15NonTrig25nsV1Categories"), #mvaTrigValuesMap = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring15Trig25nsV1Values"), #mvaTrigCategoriesMap = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring15Trig25nsV1Categories"), #eleMvaSpring16WPMediumMap = cms.InputTag("egmGsfElectronIDs:mvaEleID-Spring16-GeneralPurpose-V1-wp90"), #eleMvaSpring16WPTightMap = cms.InputTag("egmGsfElectronIDs:mvaEleID-Spring16-GeneralPurpose-V1-wp80"), #mvaSpring16ValuesMap = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring16GeneralPurposeV1Values"), #mvaSpring16CategoriesMap = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring16GeneralPurposeV1Categories"), #eleSummer16VetoIdMap = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-veto"), #eleSummer16LooseIdMap = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-loose"), #eleSummer16MediumIdMap = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-medium"), # eleSummer16TightIdMap = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-tight"), hltprocess=cms.InputTag("TriggerResults::HLT"), #changed HLT->TEST hltprocess_rerun=cms.InputTag("TriggerResults::TEST"), # triggerObjects = cms.InputTag("slimmedPatTrigger"), caloMetRaw=cms.InputTag( "hltMet", "", "TEST"), #hltMet,hltPFMETTypeOne,hltPFMETProducer pfMetRaw=cms.InputTag("hltPFMETProducer", "", "TEST"), triggerLabel=cms.InputTag("TriggerResults", "", "TEST"), #triggerPaths = cms.untracked.vstring('HLT_PFMET200_NotCleaned_v', # 'HLT_PFMET200_HBHECleaned_v', # 'HLT_PFMET250_HBHECleaned_v', # 'HLT_PFMET300_HBHECleaned_v', # 'HLT_PFMET200_HBHE_BeamHaloCleaned_v', # 'HLT_PFMETTypeOne200_HBHE_BeamHaloCleaned_v', # 'HLT_PFMET110_PFMHT110_IDTight_v', # 'HLT_CaloMET80_NotCleaned_v', # 'HLT_IsoMu20_v', # 'HLT_IsoMu24_eta2p1_v', # 'HLT_IsoMu24_v', # 'HLT_CaloJet500_NoJetID_v12', # 'HLT_CaloMET90_NotCleaned_v', # 'HLT_CaloMET100_NotCleaned_v', # 'HLT_CaloMET110_NotCleaned_v', # 'HLT_CaloMET250_NotCleaned_v', # 'HLT_CaloMET70_HBHECleaned_v', # 'HLT_CaloMET80_HBHECleaned_v', # 'HLT_CaloMET90_HBHECleaned_v', # 'HLT_CaloMET100_HBHECleaned_v', # 'HLT_CaloMET250_HBHECleaned_v', # 'HLT_CaloMET300_HBHECleaned_v', # 'HLT_CaloMET350_HBHECleaned_v', # 'HLT_Ele25_WPTight_Gsf_v', # 'HLT_Ele25_eta2p1_WPTight_Gsf_v', # 'HLT_Ele27_WPTight_Gsf_v', # 'HLT_Ele27_eta2p1_WPTight_Gsf_v', # 'HLT_Ele30_WPTight_Gsf_v', # 'HLT_Ele30_eta2p1_WPTight_Gsf_v', # 'HLT_Ele32_WPTight_Gsf_v', # 'HLT_Ele32_eta2p1_WPTight_Gsf_v', # 'HLT_PFJet40_v', # 'HLT_PFJet60_v', # 'HLT_PFJet80_v', # 'HLT_PFJet140_v', # 'HLT_PFJet200_v', # 'HLT_PFJet260_v', # 'HLT_PFJet320_v', # 'HLT_PFJet400_v', # 'HLT_PFJet450_v', # 'HLT_PFJet500_v', # 'HLT_PFJet550_v' # 'HLT_PFJetFwd40_v', # 'HLT_PFJetFwd60_v', # 'HLT_PFJetFwd80_v', # 'HLT_PFJetFwd140_v', # 'HLT_PFJetFwd200_v', # 'HLT_PFJetFwd260_v', # 'HLT_PFJetFwd320_v', # 'HLT_PFJetFwd400_v', # 'HLT_PFJetFwd450_v', # 'HLT_PFJetFwd500_v' # ) ) process.JetMetNtupleSequence = cms.Sequence(process.hltJetMetNtuple)
def configureJetMetNtuple(process): # Options parsing # ################### from FWCore.ParameterSet.VarParsing import VarParsing options = VarParsing('analysis') options.register('applyMETFilters', True, VarParsing.multiplicity.singleton, VarParsing.varType.bool, 'Apply MET filters') options.register('runJets', False, VarParsing.multiplicity.singleton, VarParsing.varType.bool, 'Store Jet Variables') ''' process.load('RecoMET.METFilters.BadChargedCandidateFilter_cfi') process.BadChargedCandidateFilter.muons = cms.InputTag("slimmedMuons") process.BadChargedCandidateFilter.PFCandidates = cms.InputTag("packedPFCandidates") process.load('RecoMET.METFilters.BadPFMuonFilter_cfi') process.BadPFMuonFilter.muons = cms.InputTag("slimmedMuons") process.BadPFMuonFilter.PFCandidates = cms.InputTag("packedPFCandidates") ''' # Electron ID ========================================================================================== setupEgammaPostRecoSeq(process, era='2017-Nov17ReReco') ### END Electron ID ==================================================================================== ### Add Event filters to reduce ntuple size ============================================================ process.primaryVertexFilter = cms.EDFilter( "VertexSelector", src=cms.InputTag("offlineSlimmedPrimaryVertices"), cut=cms.string( "!isFake && ndof >= 4 && abs(z) <= 24 && abs(position.Rho) <= 2"), filter=cms.bool( True ), # otherwise it won't filter the events, just produce an empty vertex collection. ) process.triggerSelection = cms.EDFilter( "TriggerResultsFilter", triggerConditions=cms.vstring( 'HLT_IsoMu24_v*', 'HLT_IsoMu24_eta2p1_v*', 'HLT_IsoMu27_v*', 'HLT_IsoMu30_v*', 'HLT_Ele25_WPTight_Gsf_v*', 'HLT_Ele25_eta2p1_WPTight_Gsf_v*', 'HLT_Ele27_WPTight_Gsf_v*', 'HLT_Ele27_eta2p1_WPTight_Gsf_v*', 'HLT_Ele30_WPTight_Gsf_v*', 'HLT_Ele30_eta2p1_WPTight_Gsf_v*', 'HLT_Ele32_WPTight_Gsf_v*', 'HLT_Ele32_eta2p1_WPTight_Gsf_v*', 'HLT_Ele35_WPTight_Gsf_v*'), hltResults=cms.InputTag("TriggerResults", "", "HLT"), l1tResults=cms.InputTag(""), throw=cms.bool(False)) process.SelectedMuons = cms.EDFilter( "PATMuonSelector", src=cms.InputTag("slimmedMuons"), cut=cms.string( "pt > 25 && " + "abs(eta) < 2.4" + " && isGlobalMuon" + " && passed('CutBasedIdMediumPrompt')" + " && (pfIsolationR04.sumChargedHadronPt+max(0.,(pfIsolationR04.sumNeutralHadronEt+pfIsolationR04.sumPhotonEt-0.5*pfIsolationR04.sumPUPt)))/pt < 0.15" )) process.minMuonFilter = cms.EDFilter("PATCandViewCountFilter", src=cms.InputTag('SelectedMuons'), minNumber=cms.uint32(1), maxNumber=cms.uint32(999999)) process.selectedElectrons = cms.EDFilter( "PATElectronSelector", src=cms.InputTag("slimmedElectrons"), cut=cms.string( "pt > 25 && " + "abs(eta) < 2.4" + " && (electronID('mvaEleID-Spring16-GeneralPurpose-V1-wp90')" + " || electronID('mvaEleID-Fall17-iso-V2-wp90')" + " || electronID('cutBasedElectronID-Summer16-80X-V1-medium')" + " || electronID('cutBasedElectronID-Fall17-94X-V2-medium'))" + " && (pfIsolationVariables.sumChargedHadronPt+max(0.,(pfIsolationVariables.sumNeutralHadronEt+pfIsolationVariables.sumPhotonEt-0.5*pfIsolationVariables.sumPUPt)))/pt < 0.15" )) process.minElectronFilter = cms.EDFilter( "PATCandViewCountFilter", src=cms.InputTag('selectedElectrons'), minNumber=cms.uint32(1), maxNumber=cms.uint32(999999)) if runOnMuonPD: process.leptonFilterSequence = cms.Sequence(process.SelectedMuons * process.minMuonFilter) elif runOnElectronPD: process.leptonFilterSequence = cms.Sequence(process.selectedElectrons * process.minElectronFilter) else: process.leptonFilterSequence = cms.Sequence() ######============================================================================================ process.hltJetMetNtuple = cms.EDAnalyzer( 'HLTJetMETNtupleProducer', runJets=cms.bool(options.runJets), runMets=cms.untracked.bool(False), isData=cms.bool(isData), PVCollectionTag=cms.InputTag("offlineSlimmedPrimaryVertices"), MetCollectionTag=cms.InputTag('slimmedMETs'), applyMETFilters=cms.bool(options.applyMETFilters), BadMuonFilter=cms.InputTag("BadPFMuonFilter", ""), BadChargedCandidateFilter=cms.InputTag("BadChargedCandidateFilter", ""), MuonCollectionTag=cms.InputTag('slimmedMuons'), ElectronCollectionTag=cms.InputTag('slimmedElectrons'), PFJetCollectionTag=cms.InputTag('slimmedJets'), HLTPFJetCollectionTag=cms.InputTag('hltAK4PFJetsCorrected'), HLTCaloJetCollectionTag=cms.InputTag('hltAK4CaloJetsCorrected'), hltprocess=cms.InputTag('TriggerResults::HLT'), triggerObjects=cms.InputTag("slimmedPatTrigger"), triggerPaths=cms.untracked.vstring( 'HLT_PFMET200_NotCleaned_v', 'HLT_PFMET200_HBHECleaned_v', 'HLT_PFMET250_HBHECleaned_v', 'HLT_PFMET300_HBHECleaned_v', 'HLT_PFMET200_HBHE_BeamHaloCleaned_v', 'HLT_PFMETTypeOne200_HBHE_BeamHaloCleaned_v', #'HLT_PFMET110_PFMHT110_IDTight_v', 'HLT_Ele25_WPTight_Gsf_v', 'HLT_Ele25_eta2p1_WPTight_Gsf_v', 'HLT_Ele27_WPTight_Gsf_v', 'HLT_Ele27_eta2p1_WPTight_Gsf_v', 'HLT_Ele30_WPTight_Gsf_v', 'HLT_Ele30_eta2p1_WPTight_Gsf_v', 'HLT_Ele32_WPTight_Gsf_v', 'HLT_Ele32_eta2p1_WPTight_Gsf_v', 'HLT_Ele35_WPTight_Gsf_v', 'HLT_IsoMu24_v', 'HLT_IsoMu24_eta2p1_v', 'HLT_IsoMu27_v', 'HLT_IsoMu30_v', 'HLT_PFJet40_v', 'HLT_PFJet60_v', 'HLT_PFJet80_v', 'HLT_PFJet140_v', 'HLT_PFJet200_v', 'HLT_PFJet260_v', 'HLT_PFJet320_v', 'HLT_PFJet400_v', 'HLT_PFJet450_v', 'HLT_PFJet500_v', 'HLT_PFJet550_v', 'HLT_PFJetFwd40_v', 'HLT_PFJetFwd60_v', 'HLT_PFJetFwd80_v', 'HLT_PFJetFwd140_v', 'HLT_PFJetFwd200_v', 'HLT_PFJetFwd260_v', 'HLT_PFJetFwd320_v', 'HLT_PFJetFwd400_v', 'HLT_PFJetFwd450_v', 'HLT_PFJetFwd500_v')) process.JetMetNtupleSequence = cms.Sequence( process.primaryVertexFilter * process.triggerSelection * process.egammaPostRecoSeq * process.leptonFilterSequence * process.hltJetMetNtuple)
def SingleTopStep2(): if not Config.onGrid: options = VarParsing('analysis') options.register ('subChannel', 'T_t', VarParsing.multiplicity.singleton, VarParsing.varType.string, "The sample that you are running on") options.register ('channel', 'signal', VarParsing.multiplicity.singleton, VarParsing.varType.string, "Signal or Background") options.register ('reverseIsoCut', False, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "Consider anti-isolated region") options.register ('doDebug', False, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "Turn on debugging messages") options.register ('isMC', True, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "Run on MC" ) options.register ('doGenParticlePath', True, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "Run the gen particle paths (only works on specific MC)" ) options.register ('globalTag', Config.globalTagMC, VarParsing.multiplicity.singleton, VarParsing.varType.string, "Global tag" ) options.register ('srcPUDistribution', "S10", VarParsing.multiplicity.singleton, VarParsing.varType.string, "Source pile-up distribution" ) options.register ('destPUDistribution', "data", VarParsing.multiplicity.singleton, VarParsing.varType.string, "destination pile-up distribution" ) options.register ('compHep', False, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "Use CompHep-specific processing") options.register ('sherpa', False, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "Use sherpa-specific processing") options.register ('systematic', "", VarParsing.multiplicity.singleton, VarParsing.varType.string, "Apply Systematic variation") options.register ('doPDFWeights', True, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "Run the PDF weight generation module") options.register ('dataRun', "RunABCD", VarParsing.multiplicity.singleton, VarParsing.varType.string, "A string Run{A,B,C,D} to specify the data period") options.parseArguments() if options.isMC: if options.channel.lower() == "signal": Config.channel = Config.Channel.signal elif options.channel.lower() == "background": Config.channel = Config.Channel.background Config.srcPUDistribution = pileUpDistributions.distributions[options.srcPUDistribution] Config.destPUDistribution = pileUpDistributions.distributions[options.destPUDistribution] else: Config.channel = "data" Config.subChannel = None Config.Leptons.reverseIsoCut = options.reverseIsoCut Config.subChannel = options.subChannel Config.doDebug = options.doDebug Config.isMC = options.isMC Config.isCompHep = options.compHep Config.isSherpa = options.sherpa Config.systematic = options.systematic Config.dataRun = options.dataRun print "Systematic! ",Config.systematic if Config.isMC: logging.info("Changing jet source from %s to smearedPatJetsWithOwnRef" % Config.Jets.source) Config.Jets.source = "smearedPatJetsWithOwnRef" if Config.systematic in ["ResUp", "ResDown"]: logging.info("Changing jet source from %s to smearedPatJetsWithOwnRef%s" % (Config.Jets.source, Config.systematic)) Config.Jets.source = "smearedPatJetsWithOwnRef"+Config.systematic logging.info("Changing MET source from %s to patType1CorrectedPFMetJet%s" % (Config.metSource, Config.systematic)) Config.metSource = "patType1CorrectedPFMetJet"+Config.systematic elif Config.systematic in ["EnUp", "EnDown"]: logging.info("Changing jet source from %s to shiftedPatJetsWithOwnRef%sForCorrMEt" % (Config.Jets.source, Config.systematic)) Config.Jets.source = "shiftedPatJetsWithOwnRef"+Config.systematic+"ForCorrMEt" logging.info("Changing MET source from %s to patType1CorrectedPFMetJet%s" % (Config.metSource, Config.systematic)) Config.metSource = "patType1CorrectedPFMetJet"+Config.systematic elif Config.systematic in ["UnclusteredEnUp", "UnclusteredEnDown"]: logging.info("Changing MET source from %s to patType1CorrectedPFMet%s" % (Config.metSource, Config.systematic)) Config.metSource = "patType1CorrectedPFMet"+Config.systematic print "Configuration" print Config._toStr() print Config.Jets._toStr() print Config.Muons._toStr() print Config.Electrons._toStr() print "" process = cms.Process("STPOLSEL2") eventCounting.countProcessed(process) process.load("Configuration.Geometry.GeometryIdeal_cff") process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff") from Configuration.AlCa.autoCond import autoCond process.GlobalTag.globaltag = cms.string(options.globalTag) process.load("Configuration.StandardSequences.MagneticField_cff") if Config.doDebug: process.load("FWCore.MessageLogger.MessageLogger_cfi") process.MessageLogger = cms.Service("MessageLogger", destinations=cms.untracked.vstring('cout', 'debug'), debugModules=cms.untracked.vstring('*'), cout=cms.untracked.PSet(threshold=cms.untracked.string('INFO')), debug=cms.untracked.PSet(threshold=cms.untracked.string('DEBUG')), ) logging.basicConfig(level=logging.DEBUG) else: process.load("FWCore.MessageLogger.MessageLogger_cfi") process.MessageLogger.cerr.FwkReport.reportEvery = 1000 process.MessageLogger.cerr.threshold = cms.untracked.string("INFO") logging.basicConfig(level=logging.DEBUG) process.maxEvents = cms.untracked.PSet(input=cms.untracked.int32(-1)) process.options = cms.untracked.PSet(wantSummary=cms.untracked.bool(True)) process.source = cms.Source("PoolSource", # replace 'myfile.root' with the source file you want to use fileNames=cms.untracked.vstring(""), cacheSize = cms.untracked.uint32(10*1024*1024), ) #------------------------------------------------- # Jets #------------------------------------------------- from SingleTopPolarization.Analysis.jets_step2_cfi import JetSetup JetSetup(process, Config) #------------------------------------------------- # Leptons #------------------------------------------------- #Embed the corrected isolations to the leptons #process.muonClones = cms.EDProducer("MuonShallowCloneProducer", # src = cms.InputTag(Config.Muons.source) #) process.skimmedMuons = cms.EDFilter("PtMinCandViewCloneSelector", src=cms.InputTag(Config.Muons.source), ptMin=cms.double(20) ) process.muonsWithIso = cms.EDProducer( 'MuonIsolationProducer', leptonSrc = cms.InputTag("skimmedMuons"), rhoSrc = cms.InputTag("kt6PFJets", "rho"), dR = cms.double(0.4) ) process.muIsoSequence = cms.Sequence(process.skimmedMuons*process.muonsWithIso) process.skimmedElectrons = cms.EDFilter("PtMinCandViewCloneSelector", src=cms.InputTag(Config.Electrons.source), ptMin=cms.double(20) ) process.elesWithIso = cms.EDProducer( 'ElectronIsolationProducer', leptonSrc = cms.InputTag("skimmedElectrons"), rhoSrc = cms.InputTag("kt6PFJets", "rho"), dR = cms.double(0.3) ) process.eleIsoSequence = cms.Sequence(process.skimmedElectrons*process.elesWithIso) from SingleTopPolarization.Analysis.muons_step2_cfi import MuonSetup MuonSetup(process, Config) from SingleTopPolarization.Analysis.electrons_step2_cfi import ElectronSetup ElectronSetup(process, Config) process.looseVetoMuCount = cms.EDProducer( "CollectionSizeProducer<reco::Candidate>", src = cms.InputTag("looseVetoMuons") ) process.looseVetoEleCount = cms.EDProducer( "CollectionSizeProducer<reco::Candidate>", src = cms.InputTag("looseVetoElectrons") ) #Combine the found electron/muon to a single collection process.goodSignalLeptons = cms.EDProducer( 'CandRefCombiner', sources=cms.untracked.vstring(["singleIsoMu", "singleIsoEle"]), maxOut=cms.untracked.uint32(1), minOut=cms.untracked.uint32(1) ) process.decayTreeProducerMu = cms.EDProducer( 'GenParticleDecayTreeProducer', src=cms.untracked.InputTag("singleIsoMu") ) process.decayTreeProducerEle = cms.EDProducer( 'GenParticleDecayTreeProducer', src=cms.untracked.InputTag("singleIsoEle") ) #----------------------------------------------- # Top reco and cosine calcs #----------------------------------------------- from SingleTopPolarization.Analysis.top_step2_cfi import TopRecoSetup TopRecoSetup(process) #----------------------------------------------- # Treemaking #----------------------------------------------- def treeCollection(collection_, maxElems_, varlist): varVPSet = cms.untracked.VPSet() for v in varlist: pset = cms.untracked.PSet(tag=cms.untracked.string(v[0]), expr=cms.untracked.string(v[1]), ) varVPSet.append(pset) ret = cms.untracked.PSet( collection=collection_, maxElems=cms.untracked.int32(maxElems_), variables=varVPSet ) return ret def ntupleCollection(items): varVPSet = cms.VPSet() for item in items: pset = cms.untracked.PSet( tag=cms.untracked.string(item[0]), quantity=cms.untracked.string(item[1]) ) varVPSet.append(pset) return varVPSet #Following treemakers for reference only, not to be used. Use CandViewNtpProducer2 instead! --joosep #process.treesMu = cms.EDAnalyzer('MuonCandViewTreemakerAnalyzer', # collections = cms.untracked.VPSet( # treeCollection( # cms.untracked.InputTag("muonsWithIso"), 1, # [ # ["Pt", "pt"], # ["Eta", "eta"], # ["Phi", "phi"], # ["relIso", "userFloat('%s')" % Config.Muons.relIsoType], # ["Charge", "charge"], # ["genPdgId", "? genParticlesSize() > 0 ? genParticle(0).pdgId() : 0"], # ["normChi2", "? globalTrack().isNonnull() ? normChi2 : -1.0"], # ["track_hitPattern_trackerLayersWithMeasurement", "userFloat('track_hitPattern_trackerLayersWithMeasurement')"], # ["globalTrack_hitPattern_numberOfValidMuonHits", "userFloat('globalTrack_hitPattern_numberOfValidMuonHits')"], # ["innerTrack_hitPattern_numberOfValidPixelHits", "userFloat('innerTrack_hitPattern_numberOfValidPixelHits')"], # ["db", "dB"], # ["dz", "userFloat('dz')"], # ["numberOfMatchedStations", "numberOfMatchedStations"], # ] # ), # treeCollection( # cms.untracked.InputTag("goodSignalMuons"), 1, # [ # ["Pt", "pt"], # ["Eta", "eta"], # ["Phi", "phi"], # ["relIso", "userFloat('%s')" % Config.Muons.relIsoType], # ["Charge", "charge"], # ["genPdgId", "? genParticlesSize() > 0 ? genParticle(0).pdgId() : 0"], # ] # ), # treeCollection( # cms.untracked.InputTag("looseVetoMuons"), 1, # [ # ["Pt", "pt"], # ["Eta", "eta"], # ["Phi", "phi"], # ["relIso", "userFloat('%s')" % Config.Muons.relIsoType], # ["Charge", "charge"], # ["genPdgId", "? genParticlesSize() > 0 ? genParticle(0).pdgId() : 0"], # ] # ) # ) #) #process.treesEle = cms.EDAnalyzer('ElectronCandViewTreemakerAnalyzer', # collections = cms.untracked.VPSet( # treeCollection( # cms.untracked.InputTag("elesWithIso"), 1, # [ # ["Pt", "%s" % Config.Electrons.pt], # ["Eta", "eta"], # ["Phi", "phi"], # ["relIso", "userFloat('%s')" % Config.Electrons.relIsoType], # ["mvaID", "electronID('mvaTrigV0')"], # ["Charge", "charge"], # ["superCluster_eta", "superCluster.eta"], # ["passConversionVeto", "passConversionVeto()"], # ["superCluster_eta", "superCluster.eta"], # ["gsfTrack_trackerExpectedHitsInner_numberOfHits", "userInt('gsfTrack_trackerExpectedHitsInner_numberOfHits')"] # ] # ), # treeCollection( # cms.untracked.InputTag("goodSignalElectrons"), 1, # [ # ["Pt", "%s" % Config.Electrons.pt], # ["Eta", "eta"], # ["Phi", "phi"], # ["relIso", "userFloat('%s')" % Config.Electrons.relIsoType], # ["mvaID", "electronID('mvaTrigV0')"], # ["Charge", "charge"], # ] # ), # treeCollection( # cms.untracked.InputTag("looseVetoElectrons"), 1, # [ # ["Pt", "pt"], # ["Eta", "eta"], # ["Phi", "phi"], # ["relIso", "userFloat('%s')" % Config.Electrons.relIsoType], # ["Charge", "charge"], # ["genPdgId", "? genParticlesSize() > 0 ? genParticle(0).pdgId() : 0"], # ] # ) # ) #) #process.treesJets = cms.EDAnalyzer('JetCandViewTreemakerAnalyzer', # collections = cms.untracked.VPSet( # #all the selected jets in events, passing the reference selection cuts, ordered pt-descending # treeCollection( # cms.untracked.InputTag("goodJets"), 5, # [ # ["Pt", "pt"], # ["Eta", "eta"], # ["Phi", "phi"], # ["Mass", "mass"], # ["bDiscriminator", "bDiscriminator('%s')" % Config.Jets.bTagDiscriminant], # ["bDiscriminatorTCHP", "bDiscriminator('%s')" % Config.Jets.BTagDiscriminant.TCHP], # ["bDiscriminatorCSV_MVA", "bDiscriminator('%s')" % Config.Jets.BTagDiscriminant.CSV_MVA], # ["rms", "userFloat('rms')"], # ["partonFlavour", "partonFlavour()"], # ["deltaR", "userFloat('deltaR')"] # ] # ), # # treeCollection( # # cms.untracked.InputTag("fwdMostLightJet"), 1, # # [ # # ["Pt", "pt"], # # ["Eta", "eta"], # # ["Phi", "phi"], # # ["Mass", "mass"], # # ["bDiscriminator", "bDiscriminator('combinedSecondaryVertexBJetTags')"], # # ["rms", "userFloat('rms')"] # # ] # # ), # #the tagged jet with the highest b-discriminator value (== THE b-jet) # treeCollection( # cms.untracked.InputTag("highestBTagJet"), 1, # [ # ["Pt", "pt"], # ["Eta", "eta"], # ["Phi", "phi"], # ["Mass", "mass"], # ["bDiscriminator", "bDiscriminator('%s')" % Config.Jets.bTagDiscriminant], # ["bDiscriminatorTCHP", "bDiscriminator('%s')" % Config.Jets.BTagDiscriminant.TCHP], # ["bDiscriminatorCSV_MVA", "bDiscriminator('%s')" % Config.Jets.BTagDiscriminant.CSV_MVA], # ["rms", "userFloat('rms')"], # ["partonFlavour", "partonFlavour()"], # ["deltaR", "userFloat('deltaR')"] # ] # ), # #The jet with the lowest b-discriminator value (== THE light jet) # treeCollection( # cms.untracked.InputTag("lowestBTagJet"), 1, # [ # ["Pt", "pt"], # ["Eta", "eta"], # ["Phi", "phi"], # ["Mass", "mass"], # ["bDiscriminator", "bDiscriminator('%s')" % Config.Jets.bTagDiscriminant], # ["bDiscriminatorTCHP", "bDiscriminator('%s')" % Config.Jets.BTagDiscriminant.TCHP], # ["bDiscriminatorCSV_MVA", "bDiscriminator('%s')" % Config.Jets.BTagDiscriminant.CSV_MVA], # ["rms", "userFloat('rms')"], # ["partonFlavour", "partonFlavour()"], # ["deltaR", "userFloat('deltaR')"] # ] # ), # #all the b-tagged jets in the event, ordered pt-descending # treeCollection( # cms.untracked.InputTag("btaggedJets"), Config.Jets.nBTags, # [ # ["Pt", "pt"], # ["Eta", "eta"], # ["Phi", "phi"], # ["Mass", "mass"], # ["bDiscriminator", "bDiscriminator('%s')" % Config.Jets.bTagDiscriminant], # ["bDiscriminatorTCHP", "bDiscriminator('%s')" % Config.Jets.BTagDiscriminant.TCHP], # ["bDiscriminatorCSV_MVA", "bDiscriminator('%s')" % Config.Jets.BTagDiscriminant.CSV_MVA], # ["rms", "userFloat('rms')"], # ["partonFlavour", "partonFlavour()"], # ["deltaR", "userFloat('deltaR')"] # ] # ), # treeCollection( # cms.untracked.InputTag("untaggedJets"), Config.Jets.nJets-Config.Jets.nBTags, # [ # ["Pt", "pt"], # ["Eta", "eta"], # ["Phi", "phi"], # ["Mass", "mass"], # ["bDiscriminator", "bDiscriminator('%s')" % Config.Jets.bTagDiscriminant], # ["bDiscriminatorTCHP", "bDiscriminator('%s')" % Config.Jets.BTagDiscriminant.TCHP], # ["bDiscriminatorCSV_MVA", "bDiscriminator('%s')" % Config.Jets.BTagDiscriminant.CSV_MVA], # ["rms", "userFloat('rms')"], # ["partonFlavour", "partonFlavour()"], # ["deltaR", "userFloat('deltaR')"] # ] # ) # ) #) ##process.treesEle = cms.EDAnalyzer('ElectronCandViewTreemakerAnalyzer', ## collections = cms.untracked.VPSet(treeCollection("goodSignalElectrons", 1, ## [ ## ["Pt", "pt"], ## ["Eta", "eta"], ## ["Phi", "phi"], ## ["rhoCorrRelIso", "userFloat('rhoCorrRelIso')"], ## ] ## ) ## ) ##) #process.treesCands = cms.EDAnalyzer('CandViewTreemakerAnalyzer', # collections = cms.untracked.VPSet( # treeCollection( # cms.untracked.InputTag("recoTop"), 1, # [ # ["Pt", "pt"], # ["Eta", "eta"], # ["Phi", "phi"], # ["Mass", "mass"], # ] # ), # treeCollection( # cms.untracked.InputTag("recoNu"), 1, # [ # ["Pt", "pt"], # ["Eta", "eta"], # ["Phi", "phi"], # ["Px", "p4().Px()"], # ["Py", "p4().Py()"], # ["Pz", "p4().Pz()"], # ] # ), # treeCollection( # cms.untracked.InputTag("genParticleSelector", "trueTop", "STPOLSEL2"), 1, # [ # ["Pt", "pt"], # ["Eta", "eta"], # ["Phi", "phi"], # ["Mass", "mass"], # ] # ), # treeCollection( # cms.untracked.InputTag("genParticleSelector", "trueNeutrino", "STPOLSEL2"), 1, # [ # ["Pt", "pt"], # ["Eta", "eta"], # ["Phi", "phi"], # ["Px", "p4().Px()"], # ["Py", "p4().Py()"], # ["Pz", "p4().Pz()"], # ] # ), # treeCollection( # cms.untracked.InputTag("genParticleSelector", "trueLepton", "STPOLSEL2"), 1, # [ # ["Pt", "pt"], # ["Eta", "eta"], # ["Phi", "phi"], # ] # ), # treeCollection( # cms.untracked.InputTag("genParticleSelector", "trueLightJet", "STPOLSEL2"), 1, # [ # ["Pt", "pt"], # ["Eta", "eta"], # ["Phi", "phi"], # ] # ), # treeCollection( # cms.untracked.InputTag("patMETs"), 1, # [ # ["Pt", "pt"], # ] # ), # ) #) #process.treesDouble = cms.EDAnalyzer("FloatTreemakerAnalyzer", # collections = cms.VInputTag( # #Merged cosTheta* # cms.InputTag("cosTheta", "cosThetaLightJet"), # #cosTheta* separately from mu and ele # #cms.InputTag("cosThetaProducerEle", "cosThetaLightJet"), # #cms.InputTag("cosThetaProducerMu", "cosThetaLightJet"), # #cosTheta* from gen # cms.InputTag("cosThetaProducerTrueTop", "cosThetaLightJet"), # cms.InputTag("cosThetaProducerTrueLepton", "cosThetaLightJet"), # cms.InputTag("cosThetaProducerTrueJet", "cosThetaLightJet"), # cms.InputTag("cosThetaProducerTrueAll", "cosThetaLightJet"), # cms.InputTag("puWeightProducer", "nVerticesTrue"), # #Transverse mass of MET and lepton # cms.InputTag("muAndMETMT", ""), # cms.InputTag("eleAndMETMT", ""), # ##B-tag systematics # #cms.InputTag("bTagWeightProducer", "bTagWeight"), # #cms.InputTag("bTagWeightProducer", "bTagWeightSystBCUp"), # #cms.InputTag("bTagWeightProducer", "bTagWeightSystBCDown"), # #cms.InputTag("bTagWeightProducer", "bTagWeightSystLUp"), # #cms.InputTag("bTagWeightProducer", "bTagWeightSystLDown"), # #Some debugging data # #cms.InputTag("kt6PFJets", "rho", "RECO"), # #cms.InputTag("recoNu", "Delta"), # ) #) #process.treesDoubleWeight = cms.EDAnalyzer("FloatTreemakerAnalyzer", # defaultValue = cms.untracked.double(0), # putNaNs = cms.untracked.bool(False), # collections = cms.VInputTag( # #B-tag systematics # cms.InputTag("bTagWeightProducerNJMT", "bTagWeight"), # cms.InputTag("bTagWeightProducerNJMT", "bTagWeightSystBCUp"), # cms.InputTag("bTagWeightProducerNJMT", "bTagWeightSystBCDown"), # cms.InputTag("bTagWeightProducerNJMT", "bTagWeightSystLUp"), # cms.InputTag("bTagWeightProducerNJMT", "bTagWeightSystLDown"), # #cms.InputTag("bTagWeightProducer2J1T", "bTagWeight"), # #cms.InputTag("bTagWeightProducer2J1T", "bTagWeightSystBCUp"), # #cms.InputTag("bTagWeightProducer2J1T", "bTagWeightSystBCDown"), # #cms.InputTag("bTagWeightProducer2J1T", "bTagWeightSystLUp"), # #cms.InputTag("bTagWeightProducer2J1T", "bTagWeightSystLDown"), # #cms.InputTag("bTagWeightProducer2J0T", "bTagWeight"), # #cms.InputTag("bTagWeightProducer2J0T", "bTagWeightSystBCUp"), # #cms.InputTag("bTagWeightProducer2J0T", "bTagWeightSystBCDown"), # #cms.InputTag("bTagWeightProducer2J0T", "bTagWeightSystLUp"), # #cms.InputTag("bTagWeightProducer2J0T", "bTagWeightSystLDown"), # #cms.InputTag("bTagWeightProducer3J0T", "bTagWeight"), # #cms.InputTag("bTagWeightProducer3J0T", "bTagWeightSystBCUp"), # #cms.InputTag("bTagWeightProducer3J0T", "bTagWeightSystBCDown"), # #cms.InputTag("bTagWeightProducer3J0T", "bTagWeightSystLUp"), # #cms.InputTag("bTagWeightProducer3J0T", "bTagWeightSystLDown"), # #cms.InputTag("bTagWeightProducer3J1T", "bTagWeight"), # #cms.InputTag("bTagWeightProducer3J1T", "bTagWeightSystBCUp"), # #cms.InputTag("bTagWeightProducer3J1T", "bTagWeightSystBCDown"), # #cms.InputTag("bTagWeightProducer3J1T", "bTagWeightSystLUp"), # #cms.InputTag("bTagWeightProducer3J1T", "bTagWeightSystLDown"), # #cms.InputTag("puWeightProducer", "PUWeightN0"), # cms.InputTag("puWeightProducer", "PUWeightNtrue"), # cms.InputTag("muonWeightsProducer", "muonIDWeight"), # cms.InputTag("muonWeightsProducer", "muonIDWeightUp"), # cms.InputTag("muonWeightsProducer", "muonIDWeightDown"), # cms.InputTag("muonWeightsProducer", "muonIsoWeight"), # cms.InputTag("muonWeightsProducer", "muonIsoWeightUp"), # cms.InputTag("muonWeightsProducer", "muonIsoWeightDown") # ) #) #process.treesBool = cms.EDAnalyzer("BoolTreemakerAnalyzer", # collections = cms.VInputTag( # cms.InputTag("ecalLaserCorrFilter", "", "PAT"), # ) #) #process.treesInt = cms.EDAnalyzer("IntTreemakerAnalyzer", # collections = cms.VInputTag( # [ # #cms.InputTag("recoNuProducerMu", "solType"), # #cms.InputTag("recoNuProducerEle ", "solType"), # cms.InputTag("muonCount"), # cms.InputTag("electronCount"), # cms.InputTag("topCount"), # cms.InputTag("bJetCount"), # cms.InputTag("lightJetCount"), # cms.InputTag("looseVetoMuCount"), # cms.InputTag("looseVetoEleCount"), # cms.InputTag("btaggedTrueBJetCount"), # cms.InputTag("trueBJetCount"), # cms.InputTag("btaggedTrueCJetCount"), # cms.InputTag("trueCJetCount"), # cms.InputTag("btaggedTrueLJetCount"), # cms.InputTag("trueLJetCount"), # cms.InputTag("eventIDProducer", "eventId"), # cms.InputTag("eventIDProducer", "runId"), # cms.InputTag("eventIDProducer", "lumiId"), # cms.InputTag("offlinePVCount"), # cms.InputTag("genLeptonsTCount"), # cms.InputTag("trueLeptonPdgId") # ] # ) #) #process.treeSequence = cms.Sequence(process.treesMu*process.treesEle*process.treesDouble*process.treesBool*process.treesCands*process.treesJets*process.treesInt*process.treesDoubleWeight) process.recoTopNTupleProducer = cms.EDProducer( "CandViewNtpProducer2", src = cms.InputTag("recoTop"), lazyParser = cms.untracked.bool(True), prefix = cms.untracked.string(""), #eventInfo = cms.untracked.bool(True), variables = ntupleCollection( [ ["Pt", "pt"], ["Eta", "eta"], ["Phi", "phi"], ["Mass", "mass"], ] ) ) process.recoNuNTupleProducer = cms.EDProducer( "CandViewNtpProducer2", src = cms.InputTag("recoNu"), lazyParser = cms.untracked.bool(True), prefix = cms.untracked.string(""), #eventInfo = cms.untracked.bool(True), variables = ntupleCollection( [ ["Pt", "pt"], ["Eta", "eta"], ["Phi", "phi"], ["Px", "p4().Px()"], ["Py", "p4().Py()"], ["Pz", "p4().Pz()"], ] ) ) process.trueNuNTupleProducer = process.recoNuNTupleProducer.clone( src=cms.InputTag("genParticleSelector", "trueNeutrino", "STPOLSEL2"), ) if Config.isCompHep: process.trueTopNTupleProducer = process.recoTopNTupleProducer.clone( src=cms.InputTag("recoTrueTop"), ) else: process.trueTopNTupleProducer = process.recoTopNTupleProducer.clone( src=cms.InputTag("genParticleSelector", "trueTop", "STPOLSEL2"), ) process.patMETNTupleProducer = process.recoTopNTupleProducer.clone( src=cms.InputTag(Config.metSource), ) process.trueLeptonNTupleProducer = process.recoTopNTupleProducer.clone( src=cms.InputTag("genParticleSelector", "trueLepton", "STPOLSEL2"), ) process.trueLightJetNTupleProducer = process.recoTopNTupleProducer.clone( src=cms.InputTag("genParticleSelector", "trueLightJet", "STPOLSEL2"), ) process.goodSignalMuonsNTupleProducer = cms.EDProducer( "CandViewNtpProducer2", src = cms.InputTag("goodSignalMuons"), lazyParser = cms.untracked.bool(True), prefix = cms.untracked.string(""), #eventInfo = cms.untracked.bool(True), variables = ntupleCollection( [ ["Pt", "pt"], ["Eta", "eta"], ["Phi", "phi"], ["relIso", "userFloat('%s')" % Config.Muons.relIsoType], ["Charge", "charge"], ["genPdgId", "? genParticlesSize() > 0 ? genParticle(0).pdgId() : 0"], ["motherGenPdgId", "? genParticlesSize() > 0 ? genParticle(0).mother(0).pdgId() : 0"], ["normChi2", "? globalTrack().isNonnull() ? normChi2 : -1.0"], ["trackhitPatterntrackerLayersWithMeasurement", "userFloat('track_hitPattern_trackerLayersWithMeasurement')"], ["globalTrackhitPatternnumberOfValidMuonHits", "userFloat('globalTrack_hitPattern_numberOfValidMuonHits')"], ["innerTrackhitPatternnumberOfValidPixelHits", "userFloat('innerTrack_hitPattern_numberOfValidPixelHits')"], ["db", "dB"], ["dz", "userFloat('dz')"], ["numberOfMatchedStations", "numberOfMatchedStations"], ] ) ) process.goodSignalElectronsNTupleProducer = cms.EDProducer( "CandViewNtpProducer2", src = cms.InputTag("goodSignalElectrons"), lazyParser = cms.untracked.bool(True), prefix = cms.untracked.string(""), #eventInfo = cms.untracked.bool(True), variables = ntupleCollection( [ ["Pt", "%s" % Config.Electrons.pt], ["Eta", "eta"], ["Phi", "phi"], ["relIso", "userFloat('%s')" % Config.Electrons.relIsoType], ["mvaID", "electronID('mvaTrigV0')"], ["Charge", "charge"], ["superClustereta", "superCluster.eta"], ["passConversionVeto", "passConversionVeto()"], ["gsfTracktrackerExpectedHitsInnernumberOfHits", "userInt('gsfTrack_trackerExpectedHitsInner_numberOfHits')"], ["genPdgId", "? genParticlesSize() > 0 ? genParticle(0).pdgId() : 0"], ["motherGenPdgId", "? genParticlesSize() > 0 ? genParticle(0).mother(0).pdgId() : 0"], ] ) ) process.goodJetsNTupleProducer = cms.EDProducer( "CandViewNtpProducer2", src = cms.InputTag("goodJets"), lazyParser = cms.untracked.bool(True), prefix = cms.untracked.string(""), eventInfo = cms.untracked.bool(False), variables = ntupleCollection( [ ["Pt", "pt"], ["Eta", "eta"], ["Phi", "phi"], ["Mass", "mass"], #["bDiscriminator", "bDiscriminator('%s')" % Config.Jets.bTagDiscriminant], ["bDiscriminatorTCHP", "bDiscriminator('%s')" % Config.Jets.BTagDiscriminant.TCHP], #["bDiscriminatorCSV_MVA", "bDiscriminator('%s')" % Config.Jets.BTagDiscriminant.CSV_MVA], ["rms", "userFloat('rms')"], ["partonFlavour", "partonFlavour()"], ["area", "jetArea()"], #These require PFCandidates to be present (huge collection) #["n90", "n90()"], #["n60", "n60()"], #["genJetFlavour", "? genJet()>0 ? (genJet()->pdgId()) : 0"], #FIXME ["deltaR", "userFloat('deltaR')"], ["numberOfDaughters", "numberOfDaughters"], ["neutralHadronEnergy", "neutralHadronEnergy"], ["HFHadronEnergy", "HFHadronEnergy"], ["chargedEmEnergyFraction", "chargedEmEnergyFraction"], ["neutralEmEnergyFraction", "neutralEmEnergyFraction"], ["chargedHadronEnergyFraction", "chargedHadronEnergyFraction"], ["chargedMultiplicity", "chargedMultiplicity"], ["nParticles", "userFloat('nParticles')"], ["puMva", "userFloat('mva')"], ["nCharged", "userFloat('nCharged')"], ["nNeutral", "userFloat('nNeutral')"], ] ) ) process.lowestBTagJetNTupleProducer = process.goodJetsNTupleProducer.clone(src=cms.InputTag("lowestBTagJet")) process.highestBTagJetNTupleProducer = process.goodJetsNTupleProducer.clone(src=cms.InputTag("highestBTagJet")) process.treeSequenceNew = cms.Sequence( process.patMETNTupleProducer * process.recoTopNTupleProducer * process.recoNuNTupleProducer * process.trueTopNTupleProducer * process.trueNuNTupleProducer * process.trueLeptonNTupleProducer * process.trueLightJetNTupleProducer * process.goodJetsNTupleProducer * process.lowestBTagJetNTupleProducer * process.highestBTagJetNTupleProducer * process.goodSignalMuonsNTupleProducer * process.goodSignalElectronsNTupleProducer ) #----------------------------------------------- # Flavour analyzer #----------------------------------------------- Config.doWJetsFlavour = Config.isMC and Config.subChannel.lower() == "wjets" and not Config.isSherpa if Config.doWJetsFlavour: process.flavourAnalyzer = cms.EDProducer('FlavourAnalyzer', genParticles = cms.InputTag('genParticles'), generator = cms.InputTag('generator'), genJets = cms.InputTag('selectedPatJets', 'genJets'), saveGenJets = cms.bool(False), savePDFInfo = cms.bool(True) ) #----------------------------------------------- # Paths #----------------------------------------------- from SingleTopPolarization.Analysis.hlt_step2_cfi import HLTSetup HLTSetup(process, Config) if Config.isMC and options.doPDFWeights: process.PDFweights = cms.EDProducer('PDFweightsProducer') process.pdfPath = cms.Path( process.PDFweights ) if Config.doDebug: from SingleTopPolarization.Analysis.debugAnalyzers_step2_cfi import DebugAnalyzerSetup DebugAnalyzerSetup(process) process.looseVetoMuCount = cms.EDProducer( "CollectionSizeProducer<reco::Candidate>", src = cms.InputTag("looseVetoMuons") ) process.looseVetoElectronCount = cms.EDProducer( "CollectionSizeProducer<reco::Candidate>", src = cms.InputTag("looseVetoElectrons") ) if Config.isMC and options.doGenParticlePath: if Config.isCompHep: from SingleTopPolarization.Analysis.partonStudy_comphep_step2_cfi import PartonStudySetup else: from SingleTopPolarization.Analysis.partonStudy_step2_cfi import PartonStudySetup PartonStudySetup(process) process.partonPath = cms.Path() #process.partonPath = cms.Path(process.commonPartonSequence) if Config.channel==Config.Channel.signal: process.partonPath += process.partonStudyTrueSequence if Config.doMuon: from SingleTopPolarization.Analysis.muons_step2_cfi import MuonPath MuonPath(process, Config) process.muPath.insert(process.muPath.index(process.singleIsoMu)+1, process.goodSignalLeptons) process.muPath.insert(process.muPath.index(process.looseVetoMuons)+1, process.looseVetoMuCount) process.muPath.insert(process.muPath.index(process.looseVetoElectrons)+1, process.looseVetoEleCount) if Config.doElectron: from SingleTopPolarization.Analysis.electrons_step2_cfi import ElectronPath ElectronPath(process, Config) process.elePath.insert(process.elePath.index(process.singleIsoEle)+1, process.goodSignalLeptons) process.elePath.insert(process.elePath.index(process.looseVetoMuons)+1, process.looseVetoMuCount) process.elePath.insert(process.elePath.index(process.looseVetoElectrons)+1, process.looseVetoEleCount) if Config.isMC: process.puWeightProducer = cms.EDProducer('PUWeightProducer' , maxVertices = cms.uint32(50) , srcDistribution = cms.vdouble(Config.srcPUDistribution) , destDistribution = cms.vdouble(Config.destPUDistribution) ) if Config.doMuon: process.muPath.insert(0, process.puWeightProducer) if Config.doElectron: process.elePath.insert(0, process.puWeightProducer) # process.offlinePVCount = cms.EDProducer( # "CollectionSizeProducer<reco::Vertex>", # src = cms.InputTag("offlinePrimaryVertices") # ) process.eventIDProducer = cms.EDProducer('EventIDProducer' ) process.treePath = cms.Path( process.eventIDProducer * #process.offlinePVCount * # process.treeSequence * process.treeSequenceNew ) if Config.doWJetsFlavour: process.treePath += process.flavourAnalyzer #----------------------------------------------- # Outpath #----------------------------------------------- if not Config.skipPatTupleOutput: process.out = cms.OutputModule("PoolOutputModule", dropMetaData=cms.untracked.string("DROPPED"), splitLevel=cms.untracked.int32(99), fileName=cms.untracked.string('out_step2.root'), SelectEvents=cms.untracked.PSet( SelectEvents=cms.vstring(["*"]) ), outputCommands=cms.untracked.vstring( #'drop *', 'drop *', 'keep edmMergeableCounter_*__*', 'keep *_generator__*', 'keep edmTriggerResults_TriggerResults__*', 'keep *_flavourAnalyzer_*_STPOLSEL2', 'keep floats_patMETNTupleProducer_*_STPOLSEL2', 'keep floats_recoTopNTupleProducer_*_STPOLSEL2', 'keep floats_recoNuNTupleProducer_*_STPOLSEL2', 'keep floats_trueTopNTupleProducer_*_STPOLSEL2', 'keep floats_trueNuNTupleProducer_*_STPOLSEL2', 'keep floats_trueLeptonNTupleProducer_*_STPOLSEL2', 'keep floats_goodSignalMuonsNTupleProducer_*_STPOLSEL2', 'keep floats_goodSignalElectronsNTupleProducer_*_STPOLSEL2', 'keep floats_goodJetsNTupleProducer_*_STPOLSEL2', 'keep floats_lowestBTagJetNTupleProducer_*_STPOLSEL2', 'keep floats_highestBTagJetNTupleProducer_*_STPOLSEL2', 'keep double_*__STPOLSEL2', 'keep float_*__STPOLSEL2', 'keep double_*_*_STPOLSEL2', 'keep float_*_*_STPOLSEL2', 'keep double_cosTheta_*_STPOLSEL2', 'keep double_cosThetaProducerTrueAll_*_STPOLSEL2', 'keep double_cosThetaProducerTrueTop_*_STPOLSEL2', 'keep double_cosThetaProducerTrueLepton_*_STPOLSEL2', 'keep double_cosThetaProducerTrueJet_*_STPOLSEL2', 'keep *_bTagWeightProducerNJMT_*_STPOLSEL2', 'keep int_*__STPOLSEL2', 'keep int_*_*_STPOLSEL2', 'keep int_*_*_*', 'keep String_*_*_*', #the decay trees 'keep *_pdfInfo1_*_STPOLSEL2', 'keep *_pdfInfo2_*_STPOLSEL2', 'keep *_pdfInfo3_*_STPOLSEL2', 'keep *_pdfInfo4_*_STPOLSEL2', 'keep *_pdfInfo5_*_STPOLSEL2', #'keep *', #'keep *_recoTop_*_*', #'keep *_goodSignalMuons_*_*', #'keep *_goodSignalElectrons_*_*', #'keep *_goodJets_*_*', #'keep *_bTaggedJets_*_*', #'keep *_untaggedJets_*_*', ) ) process.outpath = cms.EndPath(process.out) if Config.doElectron: process.out.SelectEvents.SelectEvents.append("elePath") if Config.doMuon: process.out.SelectEvents.SelectEvents.append("muPath") #----------------------------------------------- # #----------------------------------------------- #Command-line arguments if not Config.onGrid: process.source.fileNames = cms.untracked.vstring(options.inputFiles) process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(options.maxEvents) ) if hasattr(process, "out"): process.out.fileName = cms.untracked.string(options.outputFile) outFile = options.outputFile #from SingleTopPolarization.Analysis.cmdlineParsing import enableCommandLineArguments #(inFiles, outFile) = enableCommandLineArguments(process) else: outFile = "step2.root" #process.TFileService = cms.Service( # "TFileService", # fileName=cms.string(outFile.replace(".root", "_trees.root")), #) #print "Output trees: %s" % process.TFileService.fileName.value() if hasattr(process, "out"): print "Output patTuples: %s" % process.out.fileName.value() print 80*"-" print "Step2 configured" return process
# Auto generated configuration file # using: # Revision: 1.19 # Source: /local/reps/CMSSW/CMSSW/Configuration/Applications/python/ConfigBuilder.py,v # with command line options: step5 --conditions 106X_dataRun2_v15 --era Run2_2017 --eventcontent NANOAODSIM --filein root://cms-xrd-global.cern.ch//store/relval/CMSSW_10_6_1/JetHT/MINIAOD/106X_dataRun2_v15_rsb_RelVal_2017C-v1/10000/DF91AEDE-0FC0-DB42-9037-8CABDB66F4CE.root -s NANO --datatier NANOAODSIM --geometry DB:Extended --python NanoData.py --no_exec --fileout file:data.root -n 10000 --data import FWCore.ParameterSet.Config as cms from Configuration.Eras.Era_Run2_2016_cff import Run2_2016 from FWCore.ParameterSet.VarParsing import VarParsing options = VarParsing('standard') options.register('nevents', -1, VarParsing.multiplicity.singleton, VarParsing.varType.int, "Number of events to process") options.register( 'productionName', '/store/relval/CMSSW_10_6_8/RelValQCD_FlatPt_15_3000HS_13/MINIAODSIM/PU25ns_106X_mcRun2_asymptotic_v9_postVFP-v2/20000/96ABF93D-CD98-AD4F-9A69-AC448627FE7A.root', VarParsing.multiplicity.singleton, VarParsing.varType.string, "Name of the production") options.register('dataset', '96ABF93D-CD98-AD4F-9A69-AC448627FE7A.root', VarParsing.multiplicity.singleton, VarParsing.varType.string, "Name of the dataset") options.register('globalTag', '106X_mcRun2_asymptotic_v9_postVFP', VarParsing.multiplicity.singleton, VarParsing.varType.string, "GlobalTag of the sample") options.parseArguments()
from pdb import set_trace import ROOT ROOT.gSystem.Load('libCMGToolsHNL') from ROOT import HNLKinematicVertexFitter as VertexFitter import sys from DataFormats.FWLite import Events, Handle from itertools import product, combinations # Make VarParsing object # https://twiki.cern.ch/twiki/bin/view/CMS/SWGuideAboutPythonConfigFile#VarParsing_Example from FWCore.ParameterSet.VarParsing import VarParsing options = VarParsing ('python') options = VarParsing ('analysis') options.parseArguments() def makeRecoVertex(kinVtx, kinVtxChi2=0., kinVtxNdof=0, kinVtxTrkSize=0): point = ROOT.reco.Vertex.Point( kinVtx.vertexState().position().x(), kinVtx.vertexState().position().y(), kinVtx.vertexState().position().z(), ) error = kinVtx.vertexState().error().matrix() chi2 = kinVtxChi2 if kinVtxChi2 else kinVtx.chiSquared() ndof = kinVtxNdof if kinVtxNdof else kinVtx.degreesOfFreedom() recoVtx = ROOT.reco.Vertex(point, error, chi2, ndof, kinVtxTrkSize) return recoVtx # use Varparsing object events = Events ('/afs/cern.ch/work/d/dezhu/HNL/CMSSW_9_4_6_patch1/src/CMGTools/HNL/test/testfile.root') # create handle outside of loop handle_ele = Handle ("std::vector<pat::Electron>")
def SingleTopStep1(process, ): options = VarParsing('analysis') options.register('isMC', True, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "Run on MC") options.register('doDebug', False, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "Run in debugging mode") options.register('doSkimming', True, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "Preselect events") options.register('doSlimming', True, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "Drop unnecessary collections") options.register('doMuon', True, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "Do muon paths") options.register('doElectron', True, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "Do electron paths") #Tag from https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuideFrontierConditions?redirectedfrom=CMS.SWGuideFrontierConditions#2012_MC_production # Latest for "53Y Releases (MC)" options.register('globalTag', Config.globalTagMC, VarParsing.multiplicity.singleton, VarParsing.varType.string, "Global tag") options.parseArguments() process.source.fileNames = cms.untracked.vstring(options.inputFiles) process.maxEvents = cms.untracked.PSet( input=cms.untracked.int32(options.maxEvents)) process.out.fileName = cms.untracked.string(options.outputFile) process.options = cms.untracked.PSet( wantSummary=cms.untracked.bool(options.doDebug)) if options.doDebug: process.load("FWCore.MessageLogger.MessageLogger_cfi") process.MessageLogger = cms.Service( "MessageLogger", destinations=cms.untracked.vstring('cout', 'debug'), debugModules=cms.untracked.vstring('*'), cout=cms.untracked.PSet(threshold=cms.untracked.string('INFO')), debug=cms.untracked.PSet(threshold=cms.untracked.string('DEBUG')), ) else: process.load("FWCore.MessageService.MessageLogger_cfi") postfix = "" jetCorr = ['L1FastJet', 'L2Relative', 'L3Absolute'] if not options.isMC: jetCorr += ['L2L3Residual'] usePF2PAT( process, runPF2PAT=True, jetAlgo='AK5', runOnMC=options.isMC, postfix=postfix, jetCorrections=('AK5PFchs', jetCorr), pvCollection=cms.InputTag('goodOfflinePrimaryVertices'), #typeIMetCorrections = True typeIMetCorrections= False #Type1 MET now applied later using runMETUncertainties ) # https://twiki.cern.ch/twiki/bin/view/CMSPublic/WorkBookJetEnergyCorrections#JetEnCorPFnoPU2012 process.pfPileUp.Enable = True process.pfPileUp.checkClosestZVertex = False #------------------------------------------------- # selection step 2: vertex filter #------------------------------------------------- # https://twiki.cern.ch/twiki/bin/view/CMSPublic/WorkBookJetEnergyCorrections#JetEnCorPFnoPU2012 # https://twiki.cern.ch/twiki/bin/viewauth/CMS/TWikiTopRefEventSel#Cleaning_Filters process.goodOfflinePrimaryVertices = cms.EDFilter( "PrimaryVertexObjectFilter", filterParams=cms.PSet(minNdof=cms.double(4.0), maxZ=cms.double(24.0), maxRho=cms.double(2.0)), filter=cms.bool(True), src=cms.InputTag('offlinePrimaryVertices')) #------------------------------------------------- # Muons #------------------------------------------------- #if not maxLeptonIso is None: # process.pfIsolatedMuons.isolationCut = maxLeptonIso #Use both isolated and non-isolated muons as a patMuon source #process.patMuons.pfMuonSource = cms.InputTag("pfMuons") #process.muonMatch.src = cms.InputTag("pfMuons") process.patMuons.pfMuonSource = cms.InputTag("pfIsolatedMuons") process.muonMatch.src = cms.InputTag("pfIsolatedMuons") process.selectedPatMuons.cut = "pt>20 && abs(eta)<3.0" # muon ID production (essentially track count embedding) must be here # because tracks get dropped from the collection after this step, resulting # in null ptrs. process.muonsWithID = cms.EDProducer( 'MuonIDProducer', muonSrc=cms.InputTag("selectedPatMuons"), primaryVertexSource=cms.InputTag("goodOfflinePrimaryVertices")) #process.muonClones = cms.EDProducer("MuonShallowCloneProducer", # src = cms.InputTag("selectedPatMuons") #) #------------------------------------------------- # Electrons # Implemented as in https://indico.cern.ch/getFile.py/access?contribId=1&resId=0&materialId=slides&confId=208765 #------------------------------------------------- #if not maxLeptonIso is None: # process.pfIsolatedElectrons.isolationCut = maxLeptonIso #Use both isolated and un-isolated electrons as patElectrons. #NB: no need to change process.electronMatch.src to pfElectrons, # it's already gsfElectrons, which is a superset of the pfElectrons process.patElectrons.pfElectronSource = cms.InputTag("pfElectrons") process.load('EGamma.EGammaAnalysisTools.electronIdMVAProducer_cfi') process.mvaID = cms.Sequence(process.mvaTrigV0 + process.mvaNonTrigV0) process.patElectrons.electronIDSources.mvaTrigV0 = cms.InputTag( "mvaTrigV0") process.patElectrons.electronIDSources.mvaNonTrigV0 = cms.InputTag( "mvaNonTrigV0") process.patPF2PATSequence.replace(process.patElectrons, process.mvaID * process.patElectrons) process.selectedPatElectrons.cut = "pt>25 && abs(eta)<3.0" process.electronsWithID = cms.EDProducer( 'ElectronIDProducer', electronSrc=cms.InputTag("selectedPatElectrons"), primaryVertexSource=cms.InputTag("goodOfflinePrimaryVertices")) #process.electronClones = cms.EDProducer("ElectronShallowCloneProducer", # src = cms.InputTag("selectedPatElectrons") #) #if not maxLeptonIso is None: # process.pfIsolatedElectrons.isolationCut = maxLeptonIso #electron dR=0.3 process.pfElectrons.isolationValueMapsCharged = cms.VInputTag( cms.InputTag("elPFIsoValueCharged03PFId")) process.pfElectrons.deltaBetaIsolationValueMap = cms.InputTag( "elPFIsoValuePU03PFId") process.pfElectrons.isolationValueMapsNeutral = cms.VInputTag( cms.InputTag("elPFIsoValueNeutral03PFId"), cms.InputTag("elPFIsoValueGamma03PFId")) process.pfElectrons.deltaBetaIsolationValueMap = cms.InputTag( "elPFIsoValuePU03PFId") process.pfElectrons.isolationValueMapsNeutral = cms.VInputTag( cms.InputTag("elPFIsoValueNeutral03PFId"), cms.InputTag("elPFIsoValueGamma03PFId")) process.patElectrons.isolationValues.pfNeutralHadrons = cms.InputTag( "elPFIsoValueNeutral03PFId") process.patElectrons.isolationValues.pfChargedAll = cms.InputTag( "elPFIsoValueChargedAll03PFId") process.patElectrons.isolationValues.pfPUChargedHadrons = cms.InputTag( "elPFIsoValuePU03PFId") process.patElectrons.isolationValues.pfPhotons = cms.InputTag( "elPFIsoValueGamma03PFId") process.patElectrons.isolationValues.pfChargedHadrons = cms.InputTag( "elPFIsoValueCharged03PFId") process.pfIsolatedElectrons.isolationValueMapsCharged = cms.VInputTag( cms.InputTag("elPFIsoValueCharged03PFId")) process.pfIsolatedElectrons.deltaBetaIsolationValueMap = cms.InputTag( "elPFIsoValuePU03PFId") process.pfIsolatedElectrons.isolationValueMapsNeutral = cms.VInputTag( cms.InputTag("elPFIsoValueNeutral03PFId"), cms.InputTag("elPFIsoValueGamma03PFId")) #------------------------------------------------- # Jets # MET corrections as https://twiki.cern.ch/twiki/bin/view/CMSPublic/WorkBookMetAnalysis#Type_I_0_with_PAT #------------------------------------------------- #pfNoTau == True => remove taus from jets #process.pfNoTau.enable = noTau process.selectedPatJets.cut = cms.string("pt>30 && abs(eta)<5.0") process.load("CMGTools.External.pujetidsequence_cff") process.patPF2PATSequence += process.puJetIdSqeuence #process.jetClones = cms.EDProducer("CaloJetShallowCloneProducer", # src = cms.InputTag("seletedPatJets") #) #------------------------------------------------- # MET uncertainty step #------------------------------------------------- #Embed the reference to the original jet in the jets, which is constant during the propagation process.patJetsWithOwnRef = cms.EDProducer( 'PatObjectOwnRefProducer<pat::Jet>', src=cms.InputTag("selectedPatJets")) #Note: this module causes a large memory increase when crossing the file boundary #Reason - unknown, solution: limit processing to ~1 file. from PhysicsTools.PatUtils.tools.metUncertaintyTools import runMEtUncertainties runMEtUncertainties( process, electronCollection=cms.InputTag("electronsWithID"), photonCollection=None, muonCollection=cms.InputTag("muonsWithID"), tauCollection="", # "" means emtpy, None means cleanPatTaus jetCollection=cms.InputTag("patJetsWithOwnRef"), jetCorrLabel="L3Absolute" if options.isMC else "L2L3Residual", doSmearJets=options.isMC, jetCorrPayloadName="AK5PFchs", addToPatDefaultSequence=False) process.stpolMetUncertaintySequence = cms.Sequence( process.metUncertaintySequence) if not options.doSlimming: process.out.outputCommands = cms.untracked.vstring('keep *') else: process.out.outputCommands = cms.untracked.vstring([ 'drop *', 'keep edmMergeableCounter_*_*_*', # Keep the lumi-block counter information 'keep edmTriggerResults_TriggerResults__*', #Keep the trigger results 'keep *_genParticles__*', #keep all the genParticles #'keep recoVertexs_offlinePrimaryVertices__*', #keep the offline PV-s 'keep recoVertexs_goodOfflinePrimaryVertices__*', #keep the offline PV-s # Jets 'keep patJets_*__*', 'keep double_*_rho_*', #For rho-corr rel iso 'keep recoGenJets_selectedPatJets_genJets_*', #For Jet MC smearing we need to keep the genJets "keep *_puJetId_*_*", # input variables "keep *_puJetMva_*_*", # final MVAs and working point flags 'keep *_jetClones__*', # Muons 'keep patMuons_*__*', 'keep *_muonClones__*', # Electrons 'keep patElectrons_*__*', 'keep *_electronClones__*', # METs 'keep patMETs_*__*', #ECAL laser corr filter 'keep bool_ecalLaserCorrFilter__*', #For flavour analyzer 'keep GenEventInfoProduct_generator__*', #PU info 'keep PileupSummaryInfos_addPileupInfo__*', ##PFCandidates #'keep recoPFCandidates_*_pfCandidates_PAT', #'keep recoPFMETs_pfMET__*', #'keep recoPFMETs_pfMet__*', #'keep recoGenMETs_genMetTrue__*', #'keep recoPFCandidates_particleFlow__*', #'keep recoConversions_allConversions__*', #'keep recoVertexCompositeCandidates_generalV0Candidates_*_*', #'keep recoTracks_generalTracks__*', #'keep recoBeamSpot_offlineBeamSpot__*', #'keep recoMuons_muons__*', 'keep int_*__PAT', 'keep ints_*__PAT', 'keep double_*__PAT', 'keep doubles_*__PAT', 'keep float_*__PAT', 'keep floats_*__PAT', ]) #FIXME: is this correct? #Keep events that pass either the muon OR the electron path process.out.SelectEvents = cms.untracked.PSet(SelectEvents=cms.vstring([])) #------------------------------------------------- # Paths #------------------------------------------------- process.goodOfflinePVCount = cms.EDProducer( "CollectionSizeProducer<reco::Vertex>", src=cms.InputTag("goodOfflinePrimaryVertices")) process.preCalcSequences = cms.Sequence(process.patJetsWithOwnRef * process.goodOfflinePVCount) process.patPF2PATSequence.insert( process.patPF2PATSequence.index(process.selectedPatMuons) + 1, process.muonsWithID) process.patPF2PATSequence.insert( process.patPF2PATSequence.index(process.selectedPatElectrons) + 1, process.electronsWithID) #Need separate paths because of skimming if options.doMuon: process.singleTopPathStep1Mu = cms.Path( process.goodOfflinePrimaryVertices * process.patPF2PATSequence #* process.muonClones #* process.electronClones #* process.jetClones ) if options.doElectron: process.singleTopPathStep1Ele = cms.Path( process.goodOfflinePrimaryVertices * process.patPF2PATSequence #* process.muonClones #* process.electronClones #* process.jetClones ) if options.doMuon: process.out.SelectEvents.SelectEvents.append("singleTopPathStep1Mu") if options.doElectron: process.out.SelectEvents.SelectEvents.append("singleTopPathStep1Ele") process.GlobalTag.globaltag = cms.string(options.globalTag) process.singleTopPathStep1Mu += process.preCalcSequences process.singleTopPathStep1Ele += process.preCalcSequences if options.doMuon: process.singleTopPathStep1Mu += process.stpolMetUncertaintySequence if options.doElectron: process.singleTopPathStep1Ele += process.stpolMetUncertaintySequence if options.isMC: #https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuideBTagJetProbabilityCalibration?redirectedfrom=CMS.SWGuideBTagJetProbabilityCalibration#Calibration_in_53x_Data_and_MC process.GlobalTag.toGet = cms.VPSet( cms.PSet(record=cms.string("BTagTrackProbability2DRcd"), tag=cms.string("TrackProbabilityCalibration_2D_MC53X_v2"), connect=cms.untracked.string( "frontier://FrontierPrep/CMS_COND_BTAU")), cms.PSet(record=cms.string("BTagTrackProbability3DRcd"), tag=cms.string("TrackProbabilityCalibration_3D_MC53X_v2"), connect=cms.untracked.string( "frontier://FrontierPrep/CMS_COND_BTAU"))) else: #https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuideBTagJetProbabilityCalibration?redirectedfrom=CMS.SWGuideBTagJetProbabilityCalibration#Calibration_in_53x_Data_and_MC process.GlobalTag.toGet = cms.VPSet( cms.PSet( record=cms.string("BTagTrackProbability2DRcd"), tag=cms.string("TrackProbabilityCalibration_2D_Data53X_v2"), connect=cms.untracked.string( "frontier://FrontierPrep/CMS_COND_BTAU")), cms.PSet( record=cms.string("BTagTrackProbability3DRcd"), tag=cms.string("TrackProbabilityCalibration_3D_Data53X_v2"), connect=cms.untracked.string( "frontier://FrontierPrep/CMS_COND_BTAU"))) process.load('RecoMET.METFilters.ecalLaserCorrFilter_cfi') process.ecalLaserCorrFilter.taggingMode = True # https://twiki.cern.ch/twiki/bin/viewauth/CMS/TWikiTopRefEventSel#Cleaning_Filters process.scrapingFilter = cms.EDFilter( "FilterOutScraping", applyfilter=cms.untracked.bool(True), debugOn=cms.untracked.bool(False), numtrack=cms.untracked.uint32(10), thresh=cms.untracked.double(0.25)) #if doElectron: # process.singleTopPathStep1Ele.insert(0, process.scrapingFilter) #if doMuon: # process.singleTopPathStep1Mu.insert(0, process.scrapingFilter) process.patPF2PATSequence += process.scrapingFilter process.patPF2PATSequence += process.ecalLaserCorrFilter #if not onGrid: # from SingleTopPolarization.Analysis.cmdlineParsing import enableCommandLineArguments # enableCommandLineArguments(process) #else: # process.out.fileName = "step1.root" if options.doSkimming: process.out.fileName.setValue(process.out.fileName.value().replace( ".root", "_Skim.root")) else: process.out.fileName.setValue(process.out.fileName.value().replace( ".root", "_noSkim.root")) #----------------------------------------------- # Skimming #----------------------------------------------- #Throw away events before particle flow? if options.doSkimming: from SingleTopPolarization.Analysis.eventSkimming_cfg import skimFilters skimFilters(process) if options.doMuon: process.singleTopPathStep1Mu.insert(0, process.muonSkim) if options.doElectron: process.singleTopPathStep1Ele.insert(0, process.electronSkim) #----------------------------------------------- # Skim efficiency counters #----------------------------------------------- #count all processed events countProcessed(process) #count events passing mu and ele paths if options.doMuon: countInSequence(process, process.singleTopPathStep1Mu) if options.doElectron: countInSequence(process, process.singleTopPathStep1Ele) #------------------------------------------------- # #------------------------------------------------- if not options.doSlimming: process.out.fileName.setValue(process.out.fileName.value().replace( ".root", "_noSlim.root")) return process
import sys from FWCore.ParameterSet.VarParsing import VarParsing cmdopts = VarParsing('analysis') cmdopts.register('isData', False, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "True if running on Data, False if running on MC") cmdopts.register( 'nerohead', "XXX", VarParsing.multiplicity.singleton, VarParsing.varType.string, "Set to the head of the repository. use check_output 'git rev-parse HEAD' in the crab py file. active only if isGrid." ) cmdopts.register( "nerotag", "YYY", VarParsing.multiplicity.singleton, VarParsing.varType.string, "Set to the tag of the repository. use check_output 'git rev-parse HEAD' in the crab py file. active only if isGrid." ) cmdopts.register('connect', '', VarParsing.multiplicity.singleton, mytype=VarParsing.varType.string, info='Globaltag connect') cmdopts.register('lumiList', '', VarParsing.multiplicity.singleton, mytype=VarParsing.varType.string, info='Good lumi JSON') cmdopts._tags.pop('numEvent%d') cmdopts._tagOrder.remove('numEvent%d') cmdopts.parseArguments()