PageRenderTime 56ms CodeModel.GetById 27ms RepoModel.GetById 0ms app.codeStats 0ms

/SingleTop/test/nTupliserMC_miniAOD_cfg.py

https://gitlab.com/brunel-physics/NTupliser
Python | 197 lines | 177 code | 13 blank | 7 comment | 0 complexity | 55d3ad7a60822749c25593bf43199c21 MD5 | raw file
  1. #Set up the pat environment
  2. import FWCore.ParameterSet.Config as cms
  3. process = cms.Process("customPAT")
  4. from PhysicsTools.PatAlgos.tools.coreTools import *
  5. #Setting up various environmental stuff that makes all of this jazz actually work.
  6. ###############################
  7. ####### Global Setup ##########
  8. ###############################
  9. process.load('Configuration.Geometry.GeometryRecoDB_cff')
  10. process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_condDBv2_cff')
  11. process.load("Configuration.StandardSequences.MagneticField_cff")
  12. process.load('PhysicsTools.PatAlgos.slimming.unpackedTracksAndVertices_cfi')
  13. process.load("FWCore.MessageLogger.MessageLogger_cfi")
  14. process.load("TrackingTools/TransientTrack/TransientTrackBuilder_cfi")
  15. process.load('RecoBTag.Configuration.RecoBTag_cff')
  16. process.load('RecoJets.Configuration.RecoJetAssociations_cff')
  17. process.load('RecoJets.Configuration.RecoJetAssociations_cff')
  18. process.load('TrackingTools.TransientTrack.TransientTrackBuilder_cfi')
  19. process.load("FWCore.Framework.test.cmsExceptionsFatal_cff")
  20. process.load("SimGeneral.HepPDTESSource.pythiapdt_cfi")
  21. process.load("PhysicsTools.HepMCCandAlgos.genParticles_cfi")
  22. process.load('Configuration.StandardSequences.Services_cff')
  23. process.load("FWCore.MessageLogger.MessageLogger_cfi")
  24. process.MessageLogger.destinations = ['cerr']
  25. process.MessageLogger.statistics = []
  26. process.MessageLogger.fwkJobReports = []
  27. process.MessageLogger.categories=cms.untracked.vstring('FwkJob'
  28. ,'FwkReport'
  29. ,'FwkSummary'
  30. )
  31. process.MessageLogger.cerr.INFO = cms.untracked.PSet(limit = cms.untracked.int32(0))
  32. process.MessageLogger.cerr.FwkReport.reportEvery = cms.untracked.int32(-1)
  33. process.options = cms.untracked.PSet(
  34. wantSummary = cms.untracked.bool(True)
  35. )
  36. from Configuration.AlCa.GlobalTag import GlobalTag
  37. process.GlobalTag.globaltag = cms.string('94X_mc2017_realistic_v14')
  38. #There's a bit in here about some btau tags that the code looks for. I don't know if this is significant, however. I'm going to ignore it for now.
  39. #Import jet reco things. Apparently this makes cmsRun crash.
  40. process.load('RecoJets.Configuration.RecoPFJets_cff')
  41. process.ak4JetTracksAssociatorAtVertexPF.jets = cms.InputTag("ak4PFJetsCHS")
  42. process.ak4JetTracksAssociatorAtVertexPF.tracks = cms.InputTag("unpackedTracksAndVertices")
  43. process.impactParameterTagInfos.primaryVertex = cms.InputTag("unpackedTracksAndVertices")
  44. process.inclusiveSecondaryVertexFinderTagInfos.extSVCollection = cms.InputTag("unpackedTracksAndVertices","secondary","")
  45. #Now do cool fast jet correction things!
  46. process.ak4PFJets.doRhoFastjet = True
  47. from PhysicsTools.SelectorUtils.pvSelector_cfi import pvSelector
  48. ###############################
  49. ########Jet corrections########
  50. ###############################
  51. from PhysicsTools.PatAlgos.tools.jetTools import updateJetCollection
  52. updateJetCollection(
  53. process,
  54. jetSource = cms.InputTag('slimmedJets'),
  55. labelName = 'UpdatedJEC',
  56. jetCorrections = ('AK4PFchs', cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute']), 'None'),
  57. )
  58. process.jetCorrection = cms.Sequence( process.patJetCorrFactorsUpdatedJEC * process.updatedPatJetsUpdatedJEC )
  59. ###############################
  60. ###EGM Smearing + Regression###
  61. ###############################
  62. ## All embedded in 2017 miniAODv2
  63. ###############################
  64. ###### Electron ID ############
  65. ###############################
  66. ## All embedded in 2017 miniAODv2
  67. ###############################
  68. ##### MET Uncertainities ######
  69. ###############################
  70. #from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties import runMetCorAndUncFromMiniAOD
  71. ## If you only want to re-correct and get the proper uncertainties
  72. #runMetCorAndUncFromMiniAOD(process,
  73. # isData=False,
  74. # )
  75. # If you would like to re-cluster and get the proper uncertainties
  76. #runMetCorAndUncFromMiniAOD(process,
  77. # isData=False,
  78. # pfCandColl=cms.InputTag("packedPFCandidates"),
  79. # recoMetFromPFCs=True,
  80. # )
  81. ####
  82. # The N-tupliser/cutFlow
  83. ####
  84. process.load("NTupliser.SingleTop.MakeTopologyNtuple_miniAOD_cfi")
  85. process.makeTopologyNtupleMiniAOD.flavorHistoryTag=cms.bool(False) # change to false at your convenience
  86. process.makeTopologyNtupleMiniAOD.runMCInfo=cms.bool(True) # prevent checking gen info
  87. process.makeTopologyNtupleMiniAOD.runPUReWeight=cms.bool(True) #Run the reweighting for MC. I think I'm doing this right, but I might check anyway.
  88. #process.makeTopologyNtupleMiniAOD.triggerToken = cms.InputTag("TriggerResults","","HLT") # or HLT, depends on file
  89. #settings to apply tight selection:
  90. process.makeTopologyNtupleMiniAOD.minJetPt=cms.double(0.0)
  91. process.makeTopologyNtupleMiniAOD.maxJetEta=cms.double(5.5)
  92. process.makeTopologyNtupleMiniAOD.bDiscCut=cms.double(-1.0)
  93. process.makeTopologyNtupleMiniAOD.minElePt=cms.double(9.0)
  94. process.makeTopologyNtupleMiniAOD.maxEleEta=cms.double(2.7)
  95. process.makeTopologyNtupleMiniAOD.eleRelIso=cms.double(0.50)
  96. process.makeTopologyNtupleMiniAOD.maxMuonEta=cms.double(2.8)
  97. process.makeTopologyNtupleMiniAOD.minMuonPt=cms.double(9.0)
  98. process.makeTopologyNtupleMiniAOD.muonRelIso=cms.double(0.50)
  99. process.makeTopologyNtupleMiniAOD.maxDistForPhotonRej=cms.double(0.04)
  100. process.makeTopologyNtupleMiniAOD.maxDcotForPhotonRej=cms.double(0.03)
  101. process.makeTopologyNtupleMiniAOD.fillAll=cms.bool(True)
  102. #process.makeTopologyNtupleMiniAOD.btagParameterizationList = cms.vstring()
  103. #process.makeTopologyNtupleMiniAOD.btagParameterizationMode = cms.vstring()
  104. #Don't actually do cuts
  105. process.makeTopologyNtupleMiniAOD.doCuts=cms.bool(False) # if set to false will skip ALL cuts. Z veto still applies electron cuts.
  106. #Make the inputs for the n-tupliser right.
  107. process.makeTopologyNtupleMiniAOD.electronPFToken = cms.InputTag("slimmedElectrons")
  108. process.makeTopologyNtupleMiniAOD.tauPFTag = cms.InputTag("slimmedTaus")
  109. process.makeTopologyNtupleMiniAOD.muonPFToken = cms.InputTag("slimmedMuons")
  110. process.makeTopologyNtupleMiniAOD.jetPFToken = cms.InputTag("updatedPatJetsUpdatedJEC") # Originally slimmedJets, patJetsReapplyJEC is the jet collection with reapplied JECs
  111. process.makeTopologyNtupleMiniAOD.metPFToken = cms.InputTag("slimmedMETs")
  112. process.makeTopologyNtupleMiniAOD.rhoToken = cms.InputTag("fixedGridRhoFastjetAll")
  113. process.makeTopologyNtupleMiniAOD.conversionsToken = cms.InputTag("reducedEgamma", "reducedConversions")
  114. ## Source
  115. process.source = cms.Source("PoolSource",
  116. fileNames = cms.untracked.vstring()
  117. )
  118. ## Maximal Number of Events
  119. process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(10000) )
  120. process.source.fileNames = [
  121. 'file:/scratch/eepgadm/data/RunIIFall17MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/06176A4A-3942-E811-9191-008CFA165F5C.root',
  122. ]
  123. from PhysicsTools.PatAlgos.patEventContent_cff import *
  124. from PhysicsTools.PatAlgos.patEventContent_cff import patEventContentNoCleaning
  125. process.out = cms.OutputModule("PoolOutputModule",
  126. fileName = cms.untracked.string('patTuple.root'),
  127. ## save only events passing the full path
  128. #SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring('p') ),
  129. ## save PAT output; you need a '*' to unpack the list of commands
  130. outputCommands = cms.untracked.vstring('drop *', *patEventContentNoCleaning )
  131. )
  132. process.out.outputCommands += patEventContent
  133. process.out.outputCommands += patTriggerEventContent
  134. process.out.outputCommands += patExtraAodEventContent
  135. process.out.outputCommands += cms.untracked.vstring('keep *_flavorHistoryFilter_*_*','keep *_TriggerResults_*_*','keep *_selectedPat*_*_*', 'keep *_*goodOfflinePrimaryVertices*_*_*','keep double_*_rho_*', 'keep patMuons_*_*_*', 'keep *MET*_*_*_*', 'keep *_*MET*_*_*')
  136. #PAT output and various other outpath stuff which is a bit dumb coz I'm probably not even gonna use the outpath. Nevermind.
  137. process.out.fileName = cms.untracked.string('Data_out.root')
  138. #NTuple output
  139. process.TFileService = cms.Service("TFileService", fileName = cms.string('MC.root') )
  140. process.options.wantSummary = False
  141. process.out.SelectEvents = cms.untracked.PSet(SelectEvents = cms.vstring('p'))
  142. #Removing pat output (coz we really don't need it now)
  143. #del process.out
  144. process.p = cms.Path(
  145. process.jetCorrection *
  146. process.makeTopologyNtupleMiniAOD
  147. )
  148. process.schedule = cms.Schedule( process.p )
  149. process.outpath = cms.EndPath( process.out )