import FWCore.ParameterSet.Config as cms from Configuration.StandardSequences.Eras import eras process = cms.Process('ANASKIM',eras.Run2_HI) process.load('Configuration.StandardSequences.Services_cff') process.load('Configuration.StandardSequences.GeometryRecoDB_cff') process.load('Configuration.StandardSequences.MagneticField_cff') process.load('Configuration.StandardSequences.ReconstructionHeavyIons_cff') # Limit the output messages process.load('FWCore.MessageService.MessageLogger_cfi') process.MessageLogger.cerr.FwkReport.reportEvery = 200 process.options = cms.untracked.PSet(wantSummary = cms.untracked.bool(True)) # Define the input source process.source = cms.Source("PoolSource", fileNames = cms.untracked.vstring('root://cmsxrootd.fnal.gov//store/hidata/HIRun2015/HIOniaL1DoubleMu0D/AOD/PromptReco-v1/000/263/349/00000/762FE70D-A8A8-E511-8022-02163E011E4D.root'), inputCommands=cms.untracked.vstring('keep *','drop *_centralityBin_*_*','drop *_hiEvtPlane_*_*') ) process.maxEvents = cms.untracked.PSet(input = cms.untracked.int32(-1)) # Set the global tag process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_condDBv2_cff') from Configuration.AlCa.GlobalTag_condDBv2 import GlobalTag process.GlobalTag = GlobalTag(process.GlobalTag, '75X_dataRun2_v13', '') process.GlobalTag.snapshotTime = cms.string("9999-12-31 23:59:59.000") # Add the VertexComposite producer process.load("VertexCompositeAnalysis.VertexCompositeProducer.generalDiMuCandidates_cff") process.generalMuMuMassMin7CandidatesWrongSign = process.generalMuMuMassMin7Candidates.clone(isWrongSign = cms.bool(True)) from VertexCompositeAnalysis.VertexCompositeProducer.PATAlgos_cff import doPATMuons doPATMuons(process, False) # Add centrality and event plane process.load("RecoHI.HiEvtPlaneAlgos.HiEvtPlane_cfi") process.load("RecoHI.HiEvtPlaneAlgos.hiEvtPlaneFlat_cfi") process.load("RecoHI.HiCentralityAlgos.CentralityBin_cfi") process.centralityBin.Centrality = cms.InputTag("hiCentrality") process.centralityBin.centralityVariable = cms.string("HFtowers") process.centralityBin.nonDefaultGlauberModel = cms.string("") process.GlobalTag.toGet.extend([ cms.PSet(record = cms.string("HeavyIonRPRcd"), tag = cms.string("HeavyIonRPRcd_75x_v02_offline"), connect = cms.string("frontier://FrontierProd/CMS_CONDITIONS") ) ]) process.hiEvtPlane.loadDB = cms.bool(True) process.cent_seq = cms.Sequence(process.centralityBin * process.hiEvtPlane * process.hiEvtPlaneFlat) # Add muon event selection process.twoMuons = cms.EDFilter("CandViewCountFilter", src = cms.InputTag("muons"), minNumber = cms.uint32(2)) process.goodMuon = cms.EDFilter("MuonSelector", src = cms.InputTag("muons"), cut = process.generalMuMuMassMin7Candidates.muonSelection, ) process.twoGoodMuons = cms.EDFilter("CandViewCountFilter", src = cms.InputTag("goodMuon"), minNumber = cms.uint32(2)) process.goodDimuon = cms.EDProducer("CandViewShallowCloneCombiner", cut = process.generalMuMuMassMin7Candidates.candidateSelection, checkCharge = cms.bool(False), decay = cms.string('goodMuon@+ goodMuon@-') ) process.oneGoodDimuon = cms.EDFilter("CandViewCountFilter", src = cms.InputTag("goodDimuon"), minNumber = cms.uint32(1)) process.dimuonEvtSel = cms.Sequence(process.twoMuons * process.goodMuon * process.twoGoodMuons * process.goodDimuon * process.oneGoodDimuon) # Add trigger selection import HLTrigger.HLTfilters.hltHighLevel_cfi process.hltFilter = HLTrigger.HLTfilters.hltHighLevel_cfi.hltHighLevel.clone() process.hltFilter.andOr = cms.bool(True) process.hltFilter.throw = cms.bool(False) process.hltFilter.HLTPaths = [ # Double muon triggers 'HLT_HIL1DoubleMu0_v*', # Dimuons 'HLT_HIL1DoubleMu0_part*', # Dimuons 'HLT_HIL1DoubleMu0_2HF_v*', # Dimuons 'HLT_HIL1DoubleMu0_2HF0_v*', # Dimuons 'HLT_HIL1DoubleMu0_2HF_Cent30100_v*', # Peripheral dimuons 'HLT_HIL1DoubleMu0_2HF0_Cent30100_v*', # Peripheral dimuons 'HLT_HIL1DoubleMu10_v*', # Z boson 'HLT_HIUPCL1DoubleMuOpenNotZDCAND_v*', # UPC dimuons 'HLT_HIUPCL1DoubleMuOpenNotHF2_v*', # UPC dimuons # Single muon triggers 'HLT_HIL3Mu15_v*', # Electroweak boson 'HLT_HIUPCL1MuOpenNotZDCAND_v*', # UPC muons 'HLT_HIUPCSingleMuNotHF2Pixel_SingleTrack_v*', # UPC muons ] # Add PbPb collision event selection process.load('VertexCompositeAnalysis.VertexCompositeProducer.collisionEventSelection_cff') process.colEvtSel = cms.Sequence(process.hfCoincFilter3 * process.primaryVertexFilter * process.clusterCompatibilityFilter) # Define the event selection sequence process.eventFilter_HM = cms.Sequence( process.hltFilter * process.dimuonEvtSel ) process.eventFilter_HM_step = cms.Path( process.eventFilter_HM ) # Define the analysis steps process.pcentandep_step = cms.Path(process.eventFilter_HM * process.cent_seq) process.dimurereco_step = cms.Path(process.eventFilter_HM * process.patMuonSequence * process.generalMuMuMassMin7Candidates) process.dimurerecowrongsign_step = cms.Path(process.eventFilter_HM * process.patMuonSequence * process.generalMuMuMassMin7CandidatesWrongSign) # Add the VertexComposite tree process.load("VertexCompositeAnalysis.VertexCompositeAnalyzer.dimuanalyzer_tree_cff") process.dimucontana.selectEvents = cms.untracked.string("eventFilter_HM_step") process.dimucontana_wrongsign.selectEvents = cms.untracked.string("eventFilter_HM_step") # Define the output process.TFileService = cms.Service("TFileService", fileName = cms.string('dimuana.root')) process.p = cms.EndPath(process.dimucontana * process.dimucontana_wrongsign) # Define the process schedule process.schedule = cms.Schedule( process.eventFilter_HM_step, process.pcentandep_step, process.dimurereco_step, process.dimurerecowrongsign_step, process.p ) # Add the event selection filters process.Flag_colEvtSel = cms.Path(process.eventFilter_HM * process.colEvtSel) process.Flag_hfCoincFilter3 = cms.Path(process.eventFilter_HM * process.hfCoincFilter3) process.Flag_primaryVertexFilter = cms.Path(process.eventFilter_HM * process.primaryVertexFilter) process.Flag_clusterCompatibilityFilter = cms.Path(process.eventFilter_HM * process.clusterCompatibilityFilter) eventFilterPaths = [ process.Flag_colEvtSel , process.Flag_hfCoincFilter3 , process.Flag_primaryVertexFilter , process.Flag_clusterCompatibilityFilter ] for P in eventFilterPaths: process.schedule.insert(0, P)