DESY Hbb Analysis Framework
ntuplizer_92X_promptreco_2017-v6.py
Go to the documentation of this file.
1 # For the ntuple production
2 import FWCore.ParameterSet.Config as cms
3 
4 process = cms.Process('MssmHbb')
5 
6 process.load('FWCore.MessageService.MessageLogger_cfi')
7 process.MessageLogger.cerr.FwkReport.reportEvery = cms.untracked.int32(100000)
8 
9 ## Using MINIAOD. GlobalTag just in case jet re-clustering, L1 trigger filter etc is needed to be done
10 process.load('Configuration.StandardSequences.MagneticField_AutoFromDBCurrent_cff')
11 process.load('Configuration.Geometry.GeometryRecoDB_cff')
12 process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff')
13 from Configuration.AlCa.GlobalTag import GlobalTag
14 process.GlobalTag = GlobalTag(process.GlobalTag, '92X_dataRun2_Prompt_v11')
15 
16 process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(100) )
17 
18 ## TFileService
19 output_file = 'ntuple.root'
20 process.TFileService = cms.Service('TFileService',
21  fileName = cms.string(output_file)
22 )
23 
25 
26 ## ============ TRIGGER FILTER ===============
27 ## Enable below at cms.Path if needed - DATA ONLY!!!
28 process.triggerSelection = cms.EDFilter( 'TriggerResultsFilter',
29  MssmHbbTriggerResultsFilter,
30  hltResults = cms.InputTag( 'TriggerResults', '', 'HLT' ),
31  l1tResults = cms.InputTag( '' ),
32  l1tIgnoreMask = cms.bool( False ),
33  l1techIgnorePrescales = cms.bool( False ),
34  daqPartitions = cms.uint32( 1 ),
35  throw = cms.bool( False )
36 )
37 
38 # ### ============ Jet energy correctiosn update ============== (not really running!???)
39 # from PhysicsTools.PatAlgos.tools.jetTools import *
40 # ## Update the slimmedJets in miniAOD: corrections from the chosen Global Tag are applied and the b-tag discriminators are re-evaluated
41 # updateJetCollection(
42 # process,
43 # jetSource = cms.InputTag('slimmedJets'),
44 # jetCorrections = ('AK4PFchs', cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute', 'L2L3Residual']), 'None'),
45 # )
46 # updateJetCollection(
47 # process,
48 # labelName = 'Puppi',
49 # jetSource = cms.InputTag('slimmedJetsPuppi'),
50 # jetCorrections = ('AK4PFPuppi', cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute', 'L2L3Residual']), 'None'),
51 # )
52 
53 
54 ## ============ EVENT FILTER COUNTER ===============
55 ## Filter counter (maybe more useful for MC)
56 process.TotalEvents = cms.EDProducer('EventCountProducer')
57 process.FilteredEvents = cms.EDProducer('EventCountProducer')
58 
59 ## ============ PRIMARY VERTEX FILTER ===============
60 process.primaryVertexFilter = cms.EDFilter('VertexSelector',
61  src = cms.InputTag('offlineSlimmedPrimaryVertices'), # primary vertex collection name
62  cut = cms.string('!isFake && ndof > 4 && abs(z) <= 24 && position.Rho <= 2'), # ndof>thr=4 corresponds to sum(track_weigths) > (thr+3)/2 = 3.5 so typically 4 good tracks
63  filter = cms.bool(True), # otherwise it won't filter the events, just produce an empty vertex collection.
64 )
65 
70 
71 
72 ## ============ THE NTUPLIZER!!! ===============
73 process.MssmHbb = cms.EDAnalyzer('Ntuplizer',
74  # Imported settings (always at the beginning)
75  MssmHbbNtuplizerBtag,
76  MssmHbbNtuplizerTriggerPaths,
77  MssmHbbNtuplizerL1Seeds,
78  MssmHbbNtuplizerTriggerObjects,
79 
80  MonteCarlo = cms.bool(False),
81  ###################
82  TotalEvents = cms.InputTag ('TotalEvents'),
83  FilteredEvents = cms.InputTag ('FilteredEvents'),
84  PatJets = cms.VInputTag( cms.InputTag('slimmedJets'), cms.InputTag('slimmedJetsPuppi') ),
85  JECRecords = cms.vstring ( 'AK4PFchs', 'AK4PFPuppi', ), # for the JEC uncertainties
86  JERRecords = cms.vstring ( 'AK4PFchs', 'AK4PFPuppi', ), # for the JER uncertainties
87  FixedGridRhoAll = cms.InputTag ('fixedGridRhoAll'),
88  PatMuons = cms.VInputTag(cms.InputTag('slimmedMuons') ),
89  PrimaryVertices = cms.VInputTag(cms.InputTag('offlineSlimmedPrimaryVertices') ),
90  TriggerResults = cms.VInputTag(cms.InputTag('TriggerResults','','HLT') ),
91  L1TJets = cms.VInputTag(cms.InputTag('caloStage2Digis','Jet','RECO'), ),
92  L1TMuons = cms.VInputTag(cms.InputTag('gmtStage2Digis','Muon','RECO'), ),
93  TriggerObjectStandAlone = cms.VInputTag(cms.InputTag('slimmedPatTrigger'), ),
94 
95 )
96 
97 process.p = cms.Path(
98  process.TotalEvents *
99  process.triggerSelection *
100  process.primaryVertexFilter *
101  process.FilteredEvents *
102  process.MssmHbb
103  )
104 
105 
106 readFiles = cms.untracked.vstring()
107 secFiles = cms.untracked.vstring()
108 process.source = cms.Source ('PoolSource',fileNames = readFiles, secondaryFileNames = secFiles)
109 readFiles.extend( [
110  'file:/nfs/dust/cms/user/walsh/store/data/Run2017F/BTagCSV/MINIAOD/PromptReco-v1/000/305/112/00000/02368BFC-A6B4-E711-AC9A-02163E01A4CB.root',
111 # 'root://cms-xrd-global.cern.ch//store/data/Run2017F/BTagCSV/MINIAOD/PromptReco-v1/000/305/112/00000/02368BFC-A6B4-E711-AC9A-02163E01A4CB.root',
112 ] );
113 
114 
115 secFiles.extend( [
116  ] )
117 
118 # ============ Output MiniAOD ======================
119 # process.out = cms.OutputModule("PoolOutputModule",
120 # fileName = cms.untracked.string('patTuple.root'),
121 # outputCommands = cms.untracked.vstring('keep *' )
122 # )
123 # process.outpath = cms.EndPath(process.out)
124 
125 # ## ============ JSON Certified data =============== BE CAREFUL!!!
126 # ## Don't use with CRAB!!!
127 # import FWCore.PythonUtilities.LumiList as LumiList
128 # import FWCore.ParameterSet.Types as CfgTypes
129 # process.source.lumisToProcess = CfgTypes.untracked(CfgTypes.VLuminosityBlockRange())
130 # JSONfile = 'json.txt'
131 # myLumis = LumiList.LumiList(filename = JSONfile).getCMSSWString().split(',')
132 # process.source.lumisToProcess.extend(myLumis)