#-- Output module configuration ----------------------------------------------- process.out.fileName = options.output # Custom settings process.out.splitLevel = cms.untracked.int32(99) # Turn on split level (smaller files???) process.out.overrideInputFileSplitLevels = cms.untracked.bool(True) #process.out.dropMetaData = cms.untracked.string('DROPPED') # Get rid of metadata related to dropped collections process.out.dropMetaData = cms.untracked.string('ALL') # Get rid of metadata related to dropped collections process.out.outputCommands = cms.untracked.vstring('drop *', *SUSY_pattuple_outputCommands) if options.addKeep: process.out.outputCommands.extend(options.addKeep) # Custom RA2 related contents from SandBox.Skims.RA2Content_cff import getRA2PATOutput process.out.outputCommands = getRA2PATOutput(process) # My own customization process.out.outputCommands.extend([ 'keep *_patTaus_*_*', # 'keep *_patJets_*_*', # 'keep *_TriggerResults_*_*', 'keep edmTriggerResults_TriggerResults__REDIGI*', # 'keep *_pf*PF_*_*', 'keep *_*provInfo*_*_*', 'drop *_patJetsIC5*_*_*', 'drop *_*htCalo_*_*', 'drop *_maskedECALProducer_*_*', 'drop *_ecalAnomalousFilter_*_*' ])
# an example sequence to create skimmed susypat-tuples process.cleanpatseq = cms.Sequence( process.susyPatDefaultSequence * process.prefilterCounter * process.ra2StdCleaning * process.postStdCleaningCounter * process.ra2Objects * process.provInfoMuons * process.provInfoElectrons * process.ra2PostCleaning) # Our traditional ppf sequence process.ppf = cms.Path(process.cleanpatseq) # Output module configuration ----------------------------------------------- process.out.fileName = options.output # overwrite default output content from SandBox.Skims.RA2Content_cff import getRA2PATOutput process.out.outputCommands = getRA2PATOutput(process) process.out.dropMetaData = cms.untracked.string('DROPPED') # Custom settings process.out.splitLevel = cms.untracked.int32( 99) # Turn on split level (smaller files???) process.out.overrideInputFileSplitLevels = cms.untracked.bool(True) if options.addKeep: process.out.outputCommands.extend(options.addKeep) process.out.SelectEvents = cms.untracked.PSet(SelectEvents=cms.vstring('ppf')) #process.dump = cms.EDAnalyzer("EventContentAnalyzer") process.outpath = cms.EndPath(process.out
def makeTreeFromSignalScan(process, globalTag, smsModel, smsMotherMass, smsLSPMass, SMStopol, xs=1, numEvtsInSample=1, lumi=5.088, reportEveryEvt=5000, testFileName="/store/mc/Summer12/WJetsToLNu_HT-400ToInf_8TeV-madgraph/AODSIM/PU_S7_START52_V9-v1/0000/041CF749-57A0-E111-B6DD-0026189438DA.root", numProcessedEvt=20): #-- Meta data to be logged in DBS --------------------------------------------- process.configurationMetadata = cms.untracked.PSet( version = cms.untracked.string('$Revision: 1.1 $'), name = cms.untracked.string('$Source: /local/reps/CMSSW/UserCode/kheine/RA2Classic/TreeMaker/python/makeTreeFromSignalScan_cff.py,v $'), annotation = cms.untracked.string('SUSY pattuple definition') ) #-- Message Logger ------------------------------------------------------------ process.MessageLogger.categories.append('PATSummaryTables') process.MessageLogger.cerr.PATSummaryTables = cms.untracked.PSet( limit = cms.untracked.int32(-1), reportEvery = cms.untracked.int32(1) ) process.MessageLogger.cerr.FwkReport.reportEvery = reportEveryEvt #-- Input Source -------------------------------------------------------------- process.maxEvents.input = numProcessedEvt process.source.duplicateCheckMode = cms.untracked.string('noDuplicateCheck') process.source = cms.Source("PoolSource",fileNames = cms.untracked.vstring(testFileName)) #-- SUSYPAT specifics --------------------------------------------------------- from PhysicsTools.Configuration.SUSY_pattuple_cff import addDefaultSUSYPAT, getSUSY_pattuple_outputCommands hltMenu = 'REDIGI' theJetColls = ['AK5PF'] jetMetCorr = ['L1FastJet', 'L2Relative', 'L3Absolute'] process.GlobalTag.globaltag = globalTag addDefaultSUSYPAT(process, mcInfo=True, HLTMenu=hltMenu, jetMetCorrections=jetMetCorr, mcVersion='', theJetNames=theJetColls, doSusyTopProjection=False) # Remove the PAT cleaning and filtering sequences process.patDefaultSequence.remove(process.selectedPatCandidates) process.patDefaultSequence.remove(process.cleanPatCandidates) process.patDefaultSequence.remove(process.countPatCandidates) # Disable embedment so that lepton cleaning method works process.patJetsAK5PF.embedCaloTowers = False process.patJetsAK5PF.embedPFCandidates = False process.patJetsPF.embedCaloTowers = False process.patJetsPF.embedPFCandidates = False #-- Adjust collections to use PFNoPU jets ------------------------------------- # do not use Z-mass window for PU subtraction # such that JEC works properly process.pfPileUpPF.checkClosestZVertex = cms.bool(False) # do not remove muons and electrons from the jet clustering input # (patMuons and patElectrons use relaxed pfMuon and pfElectron collections) process.pfIsolatedElectronsPF.isolationCut = -1 process.pfIsolatedMuonsPF.isolationCut = -1 # make loose clones of the original electron collection process.pfRelaxedElectronsPF = process.pfIsolatedElectronsPF.clone() process.pfRelaxedElectronsPF.isolationCut = 9999 process.pfElectronsFromVertexPF.dzCut = 9999.0 process.pfElectronsFromVertexPF.d0Cut = 9999.0 process.pfSelectedElectronsPF.cut = "" process.patElectronsPF.pfElectronSource = "pfRelaxedElectronsPF" process.pfElectronSequencePF.replace(process.pfIsolatedElectronsPF, process.pfIsolatedElectronsPF + process.pfRelaxedElectronsPF) # make loose clones of the original muon collection process.pfRelaxedMuonsPF = process.pfIsolatedMuonsPF.clone() process.pfRelaxedMuonsPF.isolationCut = 9999 process.pfMuonsFromVertexPF.dzCut = 9999.0 process.pfMuonsFromVertexPF.d0Cut = 9999.0 process.pfSelectedMuonsPF.cut = "" process.patMuonsPF.pfMuonSource = "pfRelaxedMuonsPF" process.pfMuonSequencePF.replace(process.pfIsolatedMuonsPF, process.pfIsolatedMuonsPF + process.pfRelaxedMuonsPF) # do not remove taus from the jet collection process.pfTausPF.discriminators = cms.VPSet() process.pfUnclusteredTausPF = process.pfTausPF.clone( cut = cms.string("pt < 0") ) process.pfTauSequencePF.replace(process.pfTausPF, process.pfTausPF+ process.pfUnclusteredTausPF) process.pfNoTauPF.topCollection = "pfUnclusteredTausPF" #------------------------------------------------------------------------------ #-- Overwrite default output content ------------------------------------------ from SandBox.Skims.RA2Content_cff import getRA2PATOutput process.out.outputCommands = getRA2PATOutput(process) process.out.dropMetaData = cms.untracked.string('DROPPED') #-- RA2 filtering ------------------------------------------------------------- process.prefilterCounter = cms.EDProducer("EventCountProducer") process.postStdCleaningCounter = cms.EDProducer("EventCountProducer") process.postPostCleaningCounter = cms.EDProducer("EventCountProducer") process.postPFchsJetsCounter = cms.EDProducer("EventCountProducer") process.postPFchsHTCounter = cms.EDProducer("EventCountProducer") process.postPFchsMHTCounter = cms.EDProducer("EventCountProducer") process.load('SandBox.Skims.RA2Objects_cff') process.load('SandBox.Skims.RA2Selection_cff') process.load('SandBox.Skims.RA2Cleaning_cff') # Adjust object filters for signal-scan values process.htPFchsFilter.MinHT = cms.double(300.0) process.mhtPFchsFilter.MinMHT = cms.double(100.0) process.countJetsPFchsPt50Eta25.minNumber = cms.uint32(2) ## please comment this block to remove tagging mode of ##filters and reject events failing any of following filters process.eeNoiseFilter.taggingMode = False process.trackingFailureFilter.taggingMode = False process.beamHaloFilter.taggingMode = False process.ra2NoiseCleaning.remove(process.HBHENoiseFilter) process.inconsistentMuons.taggingMode = False process.greedyMuons.taggingMode = False process.ra2EcalTPFilter.taggingMode = False process.ra2EcalBEFilter.taggingMode = False process.hcalLaserEventFilter.taggingMode = False process.eeBadScFilter.taggingMode = False process.load("SandBox.Skims.provInfoMuons_cfi") process.load("SandBox.Skims.provInfoElectrons_cfi") process.cleanpatseq = cms.Sequence( process.susyPatDefaultSequence * process.prefilterCounter * process.ra2StdCleaning * process.postStdCleaningCounter * process.ra2Objects * process.provInfoMuons * process.provInfoElectrons * process.ra2PostCleaning * process.postPostCleaningCounter ) ## --- Setup WeightProducer -------------------------------------------- from RA2Classic.WeightProducer.weightProducer_cfi import weightProducer process.WeightProducer = weightProducer.clone( weight = cms.double(-1.0), Method = cms.string("Constant"), XS = cms.double(xs), NumberEvts = cms.double(numEvtsInSample), Lumi = cms.double(lumi), LumiScale = cms.double(1.0), FileNamePUDataDistribution = cms.string("NONE"), PU = cms.int32(0) ) ## --- SMS Model Filter ------------------------------------------------ # Filter files for specified signal point out of dataset # Code from UserCode/seema/SusyAnalysis/AnalysisUtils from SusyAnalysis.AnalysisUtils.smsModelFilter_cfi import smsModelFilter process.SMSModelFilter = smsModelFilter.clone( SusyScanTopology = cms.string(smsModel), SusyScanMotherMass = cms.double(smsMotherMass), SusyScanLSPMass = cms.double(smsLSPMass), SusyScanFracLSP = cms.double(0.0) ) #---JL #--for PDF sys process.pdfWeight = cms.EDProducer("PdfWeightProducer", PdfInfoTag = cms.untracked.InputTag("generator"), PdfSetNames = cms.untracked.vstring("cteq66.LHgrid","MSTW2008nlo68cl.LHgrid","NNPDF20_100.LHgrid") #PdfSetNames = cms.untracked.vstring("NNPDF20_100.LHgrid") ) #---for ISR sys process.lastParticles = cms.EDProducer("ISRProducer") process.ISRsys = cms.Sequence(process.lastParticles) #---put the susy params process.load("RA2Classic.SUSYParams.susyparams_cfi") process.susyparams.Model = cms.string(SMStopol) #-- end JL ## --- Setup of TreeMaker ---------------------------------------------- process.TFileService = cms.Service( "TFileService", fileName = cms.string("RA2Selection.root") ) from RA2Classic.TreeMaker.treemaker_cfi import TreeMaker process.RA2TreeMaker = TreeMaker.clone( TreeName = cms.string("RA2PreSelection"), VertexCollection = cms.InputTag('goodVertices'), HT = cms.InputTag('htPFchs'), HTJets = cms.InputTag('patJetsPFchsPt50Eta25'), MHT = cms.InputTag('mhtPFchs'), MHTJets = cms.InputTag('patJetsPFchsPt30'), VarsDouble = cms.VInputTag(cms.InputTag('WeightProducer:weight'),"susyparams:m0","susyparams:m12","susyparams:evtProcID"), VarsDoubleNamesInTree = cms.vstring('Weight',"massMom","massDau","procID"), CandidateCollections = cms.VInputTag('patJetsPFchsPt30','patMuonsPFIDIso','patElectronsIDIso'), CandidateNamesInTree = cms.vstring('Jets','PATMuonsPFIDIso','PATElectronsIDIso'), VarsDoubleV = cms.VInputTag("pdfWeight:cteq66","pdfWeight:MSTW2008nlo68cl","pdfWeight:NNPDF20"), VarsDoubleNamesInTreeV = cms.vstring("cteq66","MSTW2008nlo68cl","NNPDF20") ) #process.dump = cms.EDAnalyzer("EventContentAnalyzer") process.ppfchs = cms.Path( process.SMSModelFilter * process.cleanpatseq * process.countJetsPFchsPt50Eta25 * process.postPFchsJetsCounter * process.htPFchsFilter * process.postPFchsHTCounter * process.mhtPFchsFilter * process.postPFchsMHTCounter * process.WeightProducer * #--JL process.pdfWeight* process.ISRsys* process.susyparams* #--end JL process.RA2TreeMaker ) process.schedule = cms.Schedule(process.ppfchs)
def runRA2Preselection(process, globalTag, isData=True, reportEveryEvt=5000, testFileName="", numProcessedEvt=10): print "*** SETUP OF 'runRA2Preselection' ********************************" if isData : print " Run on data" else: print " Run on MC" print " GlobalTag = "+globalTag print "******************************************************************" #-- Meta data to be logged in DBS --------------------------------------------- process.configurationMetadata = cms.untracked.PSet( version = cms.untracked.string('$Revision: 1.5 $'), name = cms.untracked.string('$Source: /local/reps/CMSSW/UserCode/kheine/RA2Classic/Skimming/python/Preselection_cff.py,v $'), annotation = cms.untracked.string('SUSY pattuple definition') ) #-- Message Logger ------------------------------------------------------------ process.MessageLogger.categories.append('PATSummaryTables') process.MessageLogger.cerr.PATSummaryTables = cms.untracked.PSet( limit = cms.untracked.int32(-1), reportEvery = cms.untracked.int32(1) ) process.MessageLogger.cerr.FwkReport.reportEvery = reportEveryEvt #-- Input Source -------------------------------------------------------------- process.maxEvents.input = numProcessedEvt process.source.duplicateCheckMode = cms.untracked.string('noDuplicateCheck') process.source = cms.Source("PoolSource",fileNames = cms.untracked.vstring(testFileName)) #-- SUSYPAT specifics --------------------------------------------------------- from PhysicsTools.Configuration.SUSY_pattuple_cff import addDefaultSUSYPAT, getSUSY_pattuple_outputCommands if isData: hltMenu = 'HLT' else: hltMenu = 'REDIGI' theJetColls = ['AK5PF'] jetMetCorr = ['L1FastJet', 'L2Relative', 'L3Absolute'] if isData: jetMetCorr.append('L2L3Residual') process.GlobalTag.globaltag = globalTag addDefaultSUSYPAT(process, mcInfo=not isData, HLTMenu=hltMenu, jetMetCorrections=jetMetCorr, mcVersion='', theJetNames=theJetColls, doSusyTopProjection=False) # Remove the PAT cleaning and filtering sequences process.patDefaultSequence.remove(process.selectedPatCandidates) process.patDefaultSequence.remove(process.cleanPatCandidates) process.patDefaultSequence.remove(process.countPatCandidates) # Disable embedment so that lepton cleaning method works process.patJetsAK5PF.embedCaloTowers = False process.patJetsAK5PF.embedPFCandidates = False process.patJetsPF.embedCaloTowers = False process.patJetsPF.embedPFCandidates = False #-- Adjust collections to use PFNoPU jets ------------------------------------- # do not use Z-mass window for PU subtraction # such that JEC works properly process.pfPileUpPF.checkClosestZVertex = cms.bool(False) # do not remove muons and electrons from the jet clustering input # (patMuons and patElectrons use relaxed pfMuon and pfElectron collections) process.pfIsolatedElectronsPF.isolationCut = -1 process.pfIsolatedMuonsPF.isolationCut = -1 # make loose clones of the original electron collection process.pfRelaxedElectronsPF = process.pfIsolatedElectronsPF.clone() process.pfRelaxedElectronsPF.isolationCut = 9999 process.pfElectronsFromVertexPF.dzCut = 9999.0 process.pfElectronsFromVertexPF.d0Cut = 9999.0 process.pfSelectedElectronsPF.cut = "" process.patElectronsPF.pfElectronSource = "pfRelaxedElectronsPF" process.pfElectronSequencePF.replace(process.pfIsolatedElectronsPF, process.pfIsolatedElectronsPF + process.pfRelaxedElectronsPF) # make loose clones of the original muon collection process.pfRelaxedMuonsPF = process.pfIsolatedMuonsPF.clone() process.pfRelaxedMuonsPF.isolationCut = 9999 process.pfMuonsFromVertexPF.dzCut = 9999.0 process.pfMuonsFromVertexPF.d0Cut = 9999.0 process.pfSelectedMuonsPF.cut = "" process.patMuonsPF.pfMuonSource = "pfRelaxedMuonsPF" process.pfMuonSequencePF.replace(process.pfIsolatedMuonsPF, process.pfIsolatedMuonsPF + process.pfRelaxedMuonsPF) # do not remove taus from the jet collection process.pfTausPF.discriminators = cms.VPSet() process.pfUnclusteredTausPF = process.pfTausPF.clone( cut = cms.string("pt < 0") ) process.pfTauSequencePF.replace(process.pfTausPF, process.pfTausPF+ process.pfUnclusteredTausPF) process.pfNoTauPF.topCollection = "pfUnclusteredTausPF" #------------------------------------------------------------------------------ #-- Overwrite default output content ------------------------------------------ from SandBox.Skims.RA2Content_cff import getRA2PATOutput process.out.outputCommands = getRA2PATOutput(process) process.out.dropMetaData = cms.untracked.string('DROPPED') #-- RA2 filtering ------------------------------------------------------------- process.load('SandBox.Skims.RA2Objects_cff') process.load('SandBox.Skims.RA2Selection_cff') process.load('SandBox.Skims.RA2Cleaning_cff') ## Modify selection and filters for skims process.countJetsPFchsPt50Eta25.minNumber = cms.uint32(2) process.htPFchsFilter.MinHT = cms.double(350) ## Set filters in tagging mode; stores filter decision as boolean: ## - true : event passes filter ## - false : event gets rejected by filter process.eeNoiseFilter.taggingMode = True process.trackingFailureFilter.taggingMode = True process.beamHaloFilter.taggingMode = True process.inconsistentMuons.taggingMode = True process.greedyMuons.taggingMode = True process.ra2EcalTPFilter.taggingMode = True process.ra2EcalBEFilter.taggingMode = True process.hcalLaserEventFilter.taggingMode = True process.eeBadScFilter.taggingMode = True process.ecalLaserCorrFilter.taggingMode = True # Rejects the event, replaced by HBHENoiseFilterRA2 that # stores booleans process.ra2NoiseCleaning.remove(process.HBHENoiseFilter) # Tracking-POG Cleaning (booleans have inverted meaning # compared to the other filters!) process.ra2PostCleaning += process.trackingPOGCleaning process.load("SandBox.Skims.provInfoMuons_cfi") process.load("SandBox.Skims.provInfoElectrons_cfi") process.cleanpatseq = cms.Sequence( process.susyPatDefaultSequence * process.ra2StdCleaning * process.ra2Objects * process.provInfoMuons * process.provInfoElectrons * process.ra2PostCleaning ) process.dump = cms.EDAnalyzer("EventContentAnalyzer") process.ppfchs = cms.Path( process.cleanpatseq * process.countJetsPFchsPt50Eta25 * process.htPFchsFilter ) #-- Output module configuration ----------------------------------------------- process.out.fileName = cms.untracked.string('RA2Skim.root') process.out.SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring('ppfchs') ) process.outpath = cms.EndPath( process.out )
def makeTreeFromSignalScan( process, globalTag, smsModel, smsMotherMass, smsLSPMass, SMStopol, xs=1, numEvtsInSample=1, lumi=5.088, reportEveryEvt=5000, testFileName="/store/mc/Summer12/WJetsToLNu_HT-400ToInf_8TeV-madgraph/AODSIM/PU_S7_START52_V9-v1/0000/041CF749-57A0-E111-B6DD-0026189438DA.root", numProcessedEvt=20): #-- Meta data to be logged in DBS --------------------------------------------- process.configurationMetadata = cms.untracked.PSet( version=cms.untracked.string('$Revision: 1.1 $'), name=cms.untracked.string( '$Source: /local/reps/CMSSW/UserCode/kheine/RA2Classic/TreeMaker/python/makeTreeFromSignalScan_cff.py,v $' ), annotation=cms.untracked.string('SUSY pattuple definition')) #-- Message Logger ------------------------------------------------------------ process.MessageLogger.categories.append('PATSummaryTables') process.MessageLogger.cerr.PATSummaryTables = cms.untracked.PSet( limit=cms.untracked.int32(-1), reportEvery=cms.untracked.int32(1)) process.MessageLogger.cerr.FwkReport.reportEvery = reportEveryEvt #-- Input Source -------------------------------------------------------------- process.maxEvents.input = numProcessedEvt process.source.duplicateCheckMode = cms.untracked.string( 'noDuplicateCheck') process.source = cms.Source("PoolSource", fileNames=cms.untracked.vstring(testFileName)) #-- SUSYPAT specifics --------------------------------------------------------- from PhysicsTools.Configuration.SUSY_pattuple_cff import addDefaultSUSYPAT, getSUSY_pattuple_outputCommands hltMenu = 'REDIGI' theJetColls = ['AK5PF'] jetMetCorr = ['L1FastJet', 'L2Relative', 'L3Absolute'] process.GlobalTag.globaltag = globalTag addDefaultSUSYPAT(process, mcInfo=True, HLTMenu=hltMenu, jetMetCorrections=jetMetCorr, mcVersion='', theJetNames=theJetColls, doSusyTopProjection=False) # Remove the PAT cleaning and filtering sequences process.patDefaultSequence.remove(process.selectedPatCandidates) process.patDefaultSequence.remove(process.cleanPatCandidates) process.patDefaultSequence.remove(process.countPatCandidates) # Disable embedment so that lepton cleaning method works process.patJetsAK5PF.embedCaloTowers = False process.patJetsAK5PF.embedPFCandidates = False process.patJetsPF.embedCaloTowers = False process.patJetsPF.embedPFCandidates = False #-- Adjust collections to use PFNoPU jets ------------------------------------- # do not use Z-mass window for PU subtraction # such that JEC works properly process.pfPileUpPF.checkClosestZVertex = cms.bool(False) # do not remove muons and electrons from the jet clustering input # (patMuons and patElectrons use relaxed pfMuon and pfElectron collections) process.pfIsolatedElectronsPF.isolationCut = -1 process.pfIsolatedMuonsPF.isolationCut = -1 # make loose clones of the original electron collection process.pfRelaxedElectronsPF = process.pfIsolatedElectronsPF.clone() process.pfRelaxedElectronsPF.isolationCut = 9999 process.pfElectronsFromVertexPF.dzCut = 9999.0 process.pfElectronsFromVertexPF.d0Cut = 9999.0 process.pfSelectedElectronsPF.cut = "" process.patElectronsPF.pfElectronSource = "pfRelaxedElectronsPF" process.pfElectronSequencePF.replace( process.pfIsolatedElectronsPF, process.pfIsolatedElectronsPF + process.pfRelaxedElectronsPF) # make loose clones of the original muon collection process.pfRelaxedMuonsPF = process.pfIsolatedMuonsPF.clone() process.pfRelaxedMuonsPF.isolationCut = 9999 process.pfMuonsFromVertexPF.dzCut = 9999.0 process.pfMuonsFromVertexPF.d0Cut = 9999.0 process.pfSelectedMuonsPF.cut = "" process.patMuonsPF.pfMuonSource = "pfRelaxedMuonsPF" process.pfMuonSequencePF.replace( process.pfIsolatedMuonsPF, process.pfIsolatedMuonsPF + process.pfRelaxedMuonsPF) # do not remove taus from the jet collection process.pfTausPF.discriminators = cms.VPSet() process.pfUnclusteredTausPF = process.pfTausPF.clone( cut=cms.string("pt < 0")) process.pfTauSequencePF.replace( process.pfTausPF, process.pfTausPF + process.pfUnclusteredTausPF) process.pfNoTauPF.topCollection = "pfUnclusteredTausPF" #------------------------------------------------------------------------------ #-- Overwrite default output content ------------------------------------------ from SandBox.Skims.RA2Content_cff import getRA2PATOutput process.out.outputCommands = getRA2PATOutput(process) process.out.dropMetaData = cms.untracked.string('DROPPED') #-- RA2 filtering ------------------------------------------------------------- process.prefilterCounter = cms.EDProducer("EventCountProducer") process.postStdCleaningCounter = cms.EDProducer("EventCountProducer") process.postPostCleaningCounter = cms.EDProducer("EventCountProducer") process.postPFchsJetsCounter = cms.EDProducer("EventCountProducer") process.postPFchsHTCounter = cms.EDProducer("EventCountProducer") process.postPFchsMHTCounter = cms.EDProducer("EventCountProducer") process.load('SandBox.Skims.RA2Objects_cff') process.load('SandBox.Skims.RA2Selection_cff') process.load('SandBox.Skims.RA2Cleaning_cff') # Adjust object filters for signal-scan values process.htPFchsFilter.MinHT = cms.double(300.0) process.mhtPFchsFilter.MinMHT = cms.double(100.0) process.countJetsPFchsPt50Eta25.minNumber = cms.uint32(2) ## please comment this block to remove tagging mode of ##filters and reject events failing any of following filters process.eeNoiseFilter.taggingMode = False process.trackingFailureFilter.taggingMode = False process.beamHaloFilter.taggingMode = False process.ra2NoiseCleaning.remove(process.HBHENoiseFilter) process.inconsistentMuons.taggingMode = False process.greedyMuons.taggingMode = False process.ra2EcalTPFilter.taggingMode = False process.ra2EcalBEFilter.taggingMode = False process.hcalLaserEventFilter.taggingMode = False process.eeBadScFilter.taggingMode = False process.load("SandBox.Skims.provInfoMuons_cfi") process.load("SandBox.Skims.provInfoElectrons_cfi") process.cleanpatseq = cms.Sequence( process.susyPatDefaultSequence * process.prefilterCounter * process.ra2StdCleaning * process.postStdCleaningCounter * process.ra2Objects * process.provInfoMuons * process.provInfoElectrons * process.ra2PostCleaning * process.postPostCleaningCounter) ## --- Setup WeightProducer -------------------------------------------- from RA2Classic.WeightProducer.weightProducer_cfi import weightProducer process.WeightProducer = weightProducer.clone( weight=cms.double(-1.0), Method=cms.string("Constant"), XS=cms.double(xs), NumberEvts=cms.double(numEvtsInSample), Lumi=cms.double(lumi), LumiScale=cms.double(1.0), FileNamePUDataDistribution=cms.string("NONE"), PU=cms.int32(0)) ## --- SMS Model Filter ------------------------------------------------ # Filter files for specified signal point out of dataset # Code from UserCode/seema/SusyAnalysis/AnalysisUtils from SusyAnalysis.AnalysisUtils.smsModelFilter_cfi import smsModelFilter process.SMSModelFilter = smsModelFilter.clone( SusyScanTopology=cms.string(smsModel), SusyScanMotherMass=cms.double(smsMotherMass), SusyScanLSPMass=cms.double(smsLSPMass), SusyScanFracLSP=cms.double(0.0)) #---JL #--for PDF sys process.pdfWeight = cms.EDProducer( "PdfWeightProducer", PdfInfoTag=cms.untracked.InputTag("generator"), PdfSetNames=cms.untracked.vstring("cteq66.LHgrid", "MSTW2008nlo68cl.LHgrid", "NNPDF20_100.LHgrid") #PdfSetNames = cms.untracked.vstring("NNPDF20_100.LHgrid") ) #---for ISR sys process.lastParticles = cms.EDProducer("ISRProducer") process.ISRsys = cms.Sequence(process.lastParticles) #---put the susy params process.load("RA2Classic.SUSYParams.susyparams_cfi") process.susyparams.Model = cms.string(SMStopol) #-- end JL ## --- Setup of TreeMaker ---------------------------------------------- process.TFileService = cms.Service( "TFileService", fileName=cms.string("RA2Selection.root")) from RA2Classic.TreeMaker.treemaker_cfi import TreeMaker process.RA2TreeMaker = TreeMaker.clone( TreeName=cms.string("RA2PreSelection"), VertexCollection=cms.InputTag('goodVertices'), HT=cms.InputTag('htPFchs'), HTJets=cms.InputTag('patJetsPFchsPt50Eta25'), MHT=cms.InputTag('mhtPFchs'), MHTJets=cms.InputTag('patJetsPFchsPt30'), VarsDouble=cms.VInputTag(cms.InputTag('WeightProducer:weight'), "susyparams:m0", "susyparams:m12", "susyparams:evtProcID"), VarsDoubleNamesInTree=cms.vstring('Weight', "massMom", "massDau", "procID"), CandidateCollections=cms.VInputTag('patJetsPFchsPt30', 'patMuonsPFIDIso', 'patElectronsIDIso'), CandidateNamesInTree=cms.vstring('Jets', 'PATMuonsPFIDIso', 'PATElectronsIDIso'), VarsDoubleV=cms.VInputTag("pdfWeight:cteq66", "pdfWeight:MSTW2008nlo68cl", "pdfWeight:NNPDF20"), VarsDoubleNamesInTreeV=cms.vstring("cteq66", "MSTW2008nlo68cl", "NNPDF20")) #process.dump = cms.EDAnalyzer("EventContentAnalyzer") process.ppfchs = cms.Path( process.SMSModelFilter * process.cleanpatseq * process.countJetsPFchsPt50Eta25 * process.postPFchsJetsCounter * process.htPFchsFilter * process.postPFchsHTCounter * process.mhtPFchsFilter * process.postPFchsMHTCounter * process.WeightProducer * #--JL process.pdfWeight * process.ISRsys * process.susyparams * #--end JL process.RA2TreeMaker) process.schedule = cms.Schedule(process.ppfchs)
def runRA2Preselection(process, globalTag, isData=True, reportEveryEvt=5000, testFileName="", numProcessedEvt=10): print "*** SETUP OF 'runRA2Preselection' ********************************" if isData : print " Run on data" else: print " Run on MC" print " GlobalTag = "+globalTag print "******************************************************************" #-- Meta data to be logged in DBS --------------------------------------------- process.configurationMetadata = cms.untracked.PSet( version = cms.untracked.string('$Revision: 1.4 $'), name = cms.untracked.string('$Source: /local/reps/CMSSW/UserCode/kheine/RA2Classic/Skimming/python/Preselection_cff.py,v $'), annotation = cms.untracked.string('SUSY pattuple definition') ) #-- Message Logger ------------------------------------------------------------ process.MessageLogger.categories.append('PATSummaryTables') process.MessageLogger.cerr.PATSummaryTables = cms.untracked.PSet( limit = cms.untracked.int32(-1), reportEvery = cms.untracked.int32(1) ) process.MessageLogger.cerr.FwkReport.reportEvery = reportEveryEvt #-- Input Source -------------------------------------------------------------- process.maxEvents.input = numProcessedEvt process.source.duplicateCheckMode = cms.untracked.string('noDuplicateCheck') process.source = cms.Source("PoolSource",fileNames = cms.untracked.vstring(testFileName)) #-- SUSYPAT specifics --------------------------------------------------------- from PhysicsTools.Configuration.SUSY_pattuple_cff import addDefaultSUSYPAT, getSUSY_pattuple_outputCommands if isData: hltMenu = 'HLT' else: hltMenu = 'REDIGI' theJetColls = ['AK5PF'] jetMetCorr = ['L1FastJet', 'L2Relative', 'L3Absolute'] if isData: jetMetCorr.append('L2L3Residual') process.GlobalTag.globaltag = globalTag addDefaultSUSYPAT(process, mcInfo=not isData, HLTMenu=hltMenu, jetMetCorrections=jetMetCorr, mcVersion='', theJetNames=theJetColls, doSusyTopProjection=False) # Remove the PAT cleaning and filtering sequences process.patDefaultSequence.remove(process.selectedPatCandidates) process.patDefaultSequence.remove(process.cleanPatCandidates) process.patDefaultSequence.remove(process.countPatCandidates) # Disable embedment so that lepton cleaning method works process.patJetsAK5PF.embedCaloTowers = False process.patJetsAK5PF.embedPFCandidates = False process.patJetsPF.embedCaloTowers = False process.patJetsPF.embedPFCandidates = False #-- Adjust collections to use PFNoPU jets ------------------------------------- # do not use Z-mass window for PU subtraction # such that JEC works properly process.pfPileUpPF.checkClosestZVertex = cms.bool(False) # do not remove muons and electrons from the jet clustering input # (patMuons and patElectrons use relaxed pfMuon and pfElectron collections) process.pfIsolatedElectronsPF.isolationCut = -1 process.pfIsolatedMuonsPF.isolationCut = -1 # make loose clones of the original electron collection process.pfRelaxedElectronsPF = process.pfIsolatedElectronsPF.clone() process.pfRelaxedElectronsPF.isolationCut = 9999 process.pfElectronsFromVertexPF.dzCut = 9999.0 process.pfElectronsFromVertexPF.d0Cut = 9999.0 process.pfSelectedElectronsPF.cut = "" process.patElectronsPF.pfElectronSource = "pfRelaxedElectronsPF" process.pfElectronSequencePF.replace(process.pfIsolatedElectronsPF, process.pfIsolatedElectronsPF + process.pfRelaxedElectronsPF) # make loose clones of the original muon collection process.pfRelaxedMuonsPF = process.pfIsolatedMuonsPF.clone() process.pfRelaxedMuonsPF.isolationCut = 9999 process.pfMuonsFromVertexPF.dzCut = 9999.0 process.pfMuonsFromVertexPF.d0Cut = 9999.0 process.pfSelectedMuonsPF.cut = "" process.patMuonsPF.pfMuonSource = "pfRelaxedMuonsPF" process.pfMuonSequencePF.replace(process.pfIsolatedMuonsPF, process.pfIsolatedMuonsPF + process.pfRelaxedMuonsPF) # do not remove taus from the jet collection process.pfTausPF.discriminators = cms.VPSet() process.pfUnclusteredTausPF = process.pfTausPF.clone( cut = cms.string("pt < 0") ) process.pfTauSequencePF.replace(process.pfTausPF, process.pfTausPF+ process.pfUnclusteredTausPF) process.pfNoTauPF.topCollection = "pfUnclusteredTausPF" #------------------------------------------------------------------------------ #-- Overwrite default output content ------------------------------------------ from SandBox.Skims.RA2Content_cff import getRA2PATOutput process.out.outputCommands = getRA2PATOutput(process) process.out.dropMetaData = cms.untracked.string('DROPPED') #-- RA2 filtering ------------------------------------------------------------- process.load('SandBox.Skims.RA2Objects_cff') process.load('SandBox.Skims.RA2Selection_cff') process.load('SandBox.Skims.RA2Cleaning_cff') ## Modify selection and filters for skims process.countJetsPFchsPt50Eta25.minNumber = cms.uint32(2) process.htPFchsFilter.MinHT = cms.double(350) ## Set filters in tagging mode; stores filter decision as boolean: ## - true : event passes filter ## - false : event gets rejected by filter process.eeNoiseFilter.taggingMode = True process.trackingFailureFilter.taggingMode = True process.beamHaloFilter.taggingMode = True process.inconsistentMuons.taggingMode = True process.greedyMuons.taggingMode = True process.ra2EcalTPFilter.taggingMode = True process.ra2EcalBEFilter.taggingMode = True process.hcalLaserEventFilter.taggingMode = True process.eeBadScFilter.taggingMode = True process.ecalLaserCorrFilter.taggingMode = True # Rejects the event, replaced by HBHENoiseFilterRA2 that # stores booleans process.ra2NoiseCleaning.remove(process.HBHENoiseFilter) # Tracking-POG Cleaning (booleans have inverted meaning # compared to the other filters!) process.ra2PostCleaning += process.trackingPOGCleaning process.load("SandBox.Skims.provInfoMuons_cfi") process.load("SandBox.Skims.provInfoElectrons_cfi") process.cleanpatseq = cms.Sequence( process.susyPatDefaultSequence * process.ra2StdCleaning * process.ra2Objects * process.provInfoMuons * process.provInfoElectrons * process.ra2PostCleaning ) process.dump = cms.EDAnalyzer("EventContentAnalyzer") process.ppfchs = cms.Path( process.cleanpatseq * process.countJetsPFchsPt50Eta25 * process.htPFchsFilter ) #-- Output module configuration ----------------------------------------------- process.out.fileName = cms.untracked.string('RA2Skim.root') process.out.SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring('ppfchs') ) process.outpath = cms.EndPath( process.out )
def makeTreeFromFSIM(process, globalTag, reportEveryEvt=5000, testFileName="/store/mc/Summer12/WJetsToLNu_HT-400ToInf_8TeV-madgraph/AODSIM/PU_S7_START52_V9-v1/0000/041CF749-57A0-E111-B6DD-0026189438DA.root", numProcessedEvt=20): #-- Meta data to be logged in DBS --------------------------------------------- process.configurationMetadata = cms.untracked.PSet( version = cms.untracked.string('$Revision: 1.2 $'), name = cms.untracked.string('$Source: /local/reps/CMSSW/UserCode/kheine/RA2Classic/TreeMaker/python/makeTreeFromSignalScan_cff.py,v $'), annotation = cms.untracked.string('SUSY pattuple definition') ) #-- Message Logger ------------------------------------------------------------ process.MessageLogger.categories.append('PATSummaryTables') process.MessageLogger.cerr.PATSummaryTables = cms.untracked.PSet( limit = cms.untracked.int32(-1), reportEvery = cms.untracked.int32(1) ) process.MessageLogger.cerr.FwkReport.reportEvery = reportEveryEvt #-- Input Source -------------------------------------------------------------- process.maxEvents.input = numProcessedEvt process.source.duplicateCheckMode = cms.untracked.string('noDuplicateCheck') process.source = cms.Source("PoolSource",fileNames = cms.untracked.vstring(testFileName)) #-- SUSYPAT specifics --------------------------------------------------------- from PhysicsTools.Configuration.SUSY_pattuple_cff import addDefaultSUSYPAT, getSUSY_pattuple_outputCommands hltMenu = 'REDIGI' theJetColls = ['AK5PF'] jetMetCorr = ['L1FastJet', 'L2Relative', 'L3Absolute'] process.GlobalTag.globaltag = globalTag addDefaultSUSYPAT(process, mcInfo=True, HLTMenu=hltMenu, jetMetCorrections=jetMetCorr, mcVersion='', theJetNames=theJetColls, doSusyTopProjection=False) # Remove the PAT cleaning and filtering sequences process.patDefaultSequence.remove(process.selectedPatCandidates) process.patDefaultSequence.remove(process.cleanPatCandidates) process.patDefaultSequence.remove(process.countPatCandidates) # Disable embedment so that lepton cleaning method works process.patJetsAK5PF.embedCaloTowers = False process.patJetsAK5PF.embedPFCandidates = False process.patJetsPF.embedCaloTowers = False process.patJetsPF.embedPFCandidates = False #-- Adjust collections to use PFNoPU jets ------------------------------------- # do not use Z-mass window for PU subtraction # such that JEC works properly process.pfPileUpPF.checkClosestZVertex = cms.bool(False) # do not remove muons and electrons from the jet clustering input # (patMuons and patElectrons use relaxed pfMuon and pfElectron collections) process.pfIsolatedElectronsPF.isolationCut = -1 process.pfIsolatedMuonsPF.isolationCut = -1 # make loose clones of the original electron collection process.pfRelaxedElectronsPF = process.pfIsolatedElectronsPF.clone() process.pfRelaxedElectronsPF.isolationCut = 9999 process.pfElectronsFromVertexPF.dzCut = 9999.0 process.pfElectronsFromVertexPF.d0Cut = 9999.0 process.pfSelectedElectronsPF.cut = "" process.patElectronsPF.pfElectronSource = "pfRelaxedElectronsPF" process.pfElectronSequencePF.replace(process.pfIsolatedElectronsPF, process.pfIsolatedElectronsPF + process.pfRelaxedElectronsPF) # make loose clones of the original muon collection process.pfRelaxedMuonsPF = process.pfIsolatedMuonsPF.clone() process.pfRelaxedMuonsPF.isolationCut = 9999 process.pfMuonsFromVertexPF.dzCut = 9999.0 process.pfMuonsFromVertexPF.d0Cut = 9999.0 process.pfSelectedMuonsPF.cut = "" process.patMuonsPF.pfMuonSource = "pfRelaxedMuonsPF" process.pfMuonSequencePF.replace(process.pfIsolatedMuonsPF, process.pfIsolatedMuonsPF + process.pfRelaxedMuonsPF) # do not remove taus from the jet collection process.pfTausPF.discriminators = cms.VPSet() process.pfUnclusteredTausPF = process.pfTausPF.clone( cut = cms.string("pt < 0") ) process.pfTauSequencePF.replace(process.pfTausPF, process.pfTausPF+ process.pfUnclusteredTausPF) process.pfNoTauPF.topCollection = "pfUnclusteredTausPF" #------------------------------------------------------------------------------ #-- Overwrite default output content ------------------------------------------ from SandBox.Skims.RA2Content_cff import getRA2PATOutput process.out.outputCommands = getRA2PATOutput(process) process.out.dropMetaData = cms.untracked.string('DROPPED') #-- RA2 filtering ------------------------------------------------------------- process.prefilterCounter = cms.EDProducer("EventCountProducer") process.postStdCleaningCounter = cms.EDProducer("EventCountProducer") process.postPostCleaningCounter = cms.EDProducer("EventCountProducer") process.postPFchsJetsCounter = cms.EDProducer("EventCountProducer") process.postPFchsHTCounter = cms.EDProducer("EventCountProducer") process.postPFchsMHTCounter = cms.EDProducer("EventCountProducer") process.load('SandBox.Skims.RA2Objects_cff') process.load('SandBox.Skims.RA2Selection_cff') process.load('SandBox.Skims.RA2Cleaning_cff') # Adjust object filters for signal-scan values process.htPFchsFilter.MinHT = cms.double(300.0) process.mhtPFchsFilter.MinMHT = cms.double(100.0) process.countJetsPFchsPt50Eta25.minNumber = cms.uint32(2) ## RA2 cleaning process.ra2NoiseCleaning.remove(process.HBHENoiseFilterRA2) # Not in FASTSIM process.ra2NoiseCleaning.remove(process.HBHENoiseFilter) # Not in FASTSIM process.ra2NoiseCleaning.remove(process.beamHaloFilter) # Not in FASTSIM process.trackingFailureFilter.taggingMode = False process.inconsistentMuons.taggingMode = False process.greedyMuons.taggingMode = False process.ra2EcalTPFilter.taggingMode = False process.ra2EcalBEFilter.taggingMode = False process.hcalLaserEventFilter.taggingMode = False process.ecalLaserCorrFilter.taggingMode = False process.eeBadScFilter.taggingMode = False process.manystripclus53X.taggedMode = cms.untracked.bool(False) process.toomanystripclus53X.taggedMode = cms.untracked.bool(False) process.logErrorTooManyClusters.taggedMode = cms.untracked.bool(False) process.trackingPOGCleaning = cms.Sequence( ~process.manystripclus53X * ~process.toomanystripclus53X * ~process.logErrorTooManyClusters ) #process.ra2NoiseCleaning += process.trackingPOGCleaning process.ra2NoiseCleaning += process.ra2PBNR from SandBox.Skims.hoNoiseFilter_cfi import hoNoiseFilter process.RA2HONoiseFilter = hoNoiseFilter.clone( patJetsInputTag = cms.InputTag('patJetsPFchsPt30'), jetPtMin = cms.double(30), jetEtaMax = cms.double(5), maxHOEfrac = cms.double(0.4), taggingMode = cms.bool(False) ) process.ra2NoiseCleaning += process.RA2HONoiseFilter process.load("SandBox.Skims.provInfoMuons_cfi") process.load("SandBox.Skims.provInfoElectrons_cfi") process.cleanpatseq = cms.Sequence( process.susyPatDefaultSequence * process.prefilterCounter * process.ra2StdCleaning * process.postStdCleaningCounter * process.ra2Objects * process.provInfoMuons * process.provInfoElectrons * process.ra2PostCleaning * process.postPostCleaningCounter ) ## Lepton veto process.load('SandBox.Skims.RA2Leptons_cff') process.LeptonVeto = cms.Sequence( process.ra2PFMuonVeto * process.ra2ElectronVeto ) ## --- Setup WeightProducer -------------------------------------------- from RA2Classic.WeightProducer.weightProducer_cfi import weightProducer process.WeightProducer = weightProducer.clone( weight = cms.double(-1.0), Method = cms.string("Constant"), XS = cms.double(1), NumberEvts = cms.double(1), Lumi = cms.double(1), LumiScale = cms.double(1.0), PU = cms.int32(2), # PU Summer12S7 FileNamePUDataDistribution = cms.string("RA2Classic/WeightProducer/data/DataPileupHistogram_RA2Summer12_190456-208686_ABCD.root") ) ## --- Setup of TreeMaker ---------------------------------------------- process.TFileService = cms.Service( "TFileService", fileName = cms.string("RA2Selection.root") ) from RA2Classic.TreeMaker.treemaker_cfi import TreeMaker process.RA2TreeMaker = TreeMaker.clone( TreeName = cms.string("RA2Selection"), VertexCollection = cms.InputTag('goodVertices'), HT = cms.InputTag('htPFchs'), HTJets = cms.InputTag('patJetsPFchsPt50Eta25'), MHT = cms.InputTag('mhtPFchs'), MHTJets = cms.InputTag('patJetsPFchsPt30'), VarsDouble = cms.VInputTag(cms.InputTag('WeightProducer:weight')), VarsDoubleNamesInTree = cms.vstring('Weight'), ) #process.dump = cms.EDAnalyzer("EventContentAnalyzer") process.ppfchs = cms.Path( process.cleanpatseq * process.LeptonVeto * process.countJetsPFchsPt50Eta25 * process.postPFchsJetsCounter * process.htPFchsFilter * process.postPFchsHTCounter * process.mhtPFchsFilter * process.postPFchsMHTCounter * process.WeightProducer * process.RA2TreeMaker ) process.schedule = cms.Schedule(process.ppfchs)