DESY Hbb Analysis Framework
ntuplizer_94X_mc_2017_fall17-v1.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, '94X_mc2017_realistic_v14')
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 
39 # only need if discriminator is new or recommended not for JEC
40 bTagDiscriminators = [
41  'pfCombinedInclusiveSecondaryVertexV2BJetTags',
42  'pfJetProbabilityBJetTags',
43  'pfDeepCSVJetTags:probudsg',
44  'pfDeepCSVJetTags:probb',
45  'pfDeepCSVJetTags:probc',
46  'pfDeepCSVJetTags:probbb',
47  'pfDeepCSVJetTags:probcc',
48 ]
49 
50 
51 ### ============ Jet energy correctiosn update ============== (not really running!???)
53 ## Update the slimmedJets in miniAOD: corrections from the chosen Global Tag are applied and the b-tag discriminators are re-evaluated
54 updateJetCollection(
55  process,
56  jetSource = cms.InputTag('slimmedJets'),
57  jetCorrections = ('AK4PFchs', cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute', 'L2L3Residual']), 'None'),
58 # btagDiscriminators = bTagDiscriminators
59 )
60 updateJetCollection(
61  process,
62  labelName = 'Puppi',
63  jetSource = cms.InputTag('slimmedJetsPuppi'),
64  jetCorrections = ('AK4PFPuppi', cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute', 'L2L3Residual']), 'None'),
65 # btagDiscriminators = bTagDiscriminators
66 )
67 updateJetCollection(
68  process,
69  labelName = 'AK8',
70  jetSource = cms.InputTag('slimmedJetsAK8'),
71  jetCorrections = ('AK8PFchs', cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute', 'L2L3Residual']), 'None'),
72 # btagDiscriminators = bTagDiscriminators
73 )
74 
75 
76 ## ============ EVENT FILTER COUNTER ===============
77 ## Filter counter (maybe more useful for MC)
78 process.TotalEvents = cms.EDProducer('EventCountProducer')
79 process.FilteredEvents = cms.EDProducer('EventCountProducer')
80 
81 ## ============ PRIMARY VERTEX FILTER ===============
82 process.primaryVertexFilter = cms.EDFilter('VertexSelector',
83  src = cms.InputTag('offlineSlimmedPrimaryVertices'), # primary vertex collection name
84  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
85  filter = cms.bool(True), # otherwise it won't filter the events, just produce an empty vertex collection.
86 )
87 
92 
93 
94 ## ============ THE NTUPLIZER!!! ===============
95 process.MssmHbb = cms.EDAnalyzer('Ntuplizer',
96  # Imported settings (always at the beginning)
97  MssmHbbNtuplizerBtag,
98  MssmHbbNtuplizerTriggerPaths,
99  MssmHbbNtuplizerL1Seeds,
100  MssmHbbNtuplizerTriggerObjects,
101 
102  MonteCarlo = cms.bool(True),
103  ## Monte Carlo only
104  CrossSection = cms.double(1.), # in pb
105  GenFilterInfo = cms.InputTag("genFilterEfficiencyProducer"),
106  GenRunInfo = cms.InputTag("generator"),
107  GenEventInfo = cms.InputTag("generator"),
108  GenJets = cms.VInputTag(cms.InputTag("slimmedGenJets")),
109  GenParticles = cms.VInputTag(cms.InputTag("prunedGenParticles")),
110  PileupInfo = cms.InputTag("slimmedAddPileupInfo"),
111  ###################
112  TotalEvents = cms.InputTag ('TotalEvents'),
113  FilteredEvents = cms.InputTag ('FilteredEvents'),
114 # PatJets = cms.VInputTag( cms.InputTag('slimmedJets'), cms.InputTag('slimmedJetsPuppi'), cms.InputTag('slimmedJetsAK8'), ),
115  PatJets = cms.VInputTag( cms.InputTag('updatedPatJets'), cms.InputTag('updatedPatJetsPuppi'), cms.InputTag('updatedPatJetsAK8'), ),
116  JECRecords = cms.vstring ( 'AK4PFchs', 'AK4PFPuppi', 'AK8PFchs', ), # for the JEC uncertainties
117  JERRecords = cms.vstring ( 'AK4PFchs', 'AK4PFPuppi', 'AK8PFchs', ), # for the JER uncertainties
118  FixedGridRhoAll = cms.InputTag ('fixedGridRhoAll'),
119  PatMuons = cms.VInputTag(cms.InputTag('slimmedMuons') ),
120  PrimaryVertices = cms.VInputTag(cms.InputTag('offlineSlimmedPrimaryVertices') ),
121  TriggerResults = cms.VInputTag(cms.InputTag('TriggerResults','','HLT') ),
122  L1TJets = cms.VInputTag(cms.InputTag('caloStage2Digis','Jet','RECO'), ),
123  L1TMuons = cms.VInputTag(cms.InputTag('gmtStage2Digis','Muon','RECO'), ),
124  TriggerObjectStandAlone = cms.VInputTag(cms.InputTag('slimmedPatTrigger'), ),
125 
126 )
127 
128 process.p = cms.Path(
129  process.TotalEvents *
130 # process.triggerSelection *
131  process.primaryVertexFilter *
132  process.FilteredEvents *
133  process.patJetCorrFactors * process.updatedPatJets *
134  process.patJetCorrFactorsPuppi * process.updatedPatJetsPuppi *
135  process.patJetCorrFactorsAK8 * process.updatedPatJetsAK8 *
136  process.MssmHbb
137  )
138 
139 
140 readFiles = cms.untracked.vstring()
141 secFiles = cms.untracked.vstring()
142 process.source = cms.Source ('PoolSource',fileNames = readFiles, secondaryFileNames = secFiles)
143 readFiles.extend( [
144  '/store/mc/RunIIFall17MiniAOD/SUSYGluGluToBBHToBB_M-350_TuneCP5_13TeV-pythia8/MINIAODSIM/94X_mc2017_realistic_v11-v1/00000/02D5DD76-241B-E811-A02E-0CC47A2B0214.root',
145 ] );
146 
147 
148 secFiles.extend( [
149  ] )
150 
151 # ============ Output MiniAOD ======================
152 # process.out = cms.OutputModule("PoolOutputModule",
153 # fileName = cms.untracked.string('patTuple.root'),
154 # outputCommands = cms.untracked.vstring('keep *' )
155 # )
156 # process.outpath = cms.EndPath(process.out)
157 
158 # ## ============ JSON Certified data =============== BE CAREFUL!!!
159 # ## Don't use with CRAB!!!
160 # import FWCore.PythonUtilities.LumiList as LumiList
161 # import FWCore.ParameterSet.Types as CfgTypes
162 # process.source.lumisToProcess = CfgTypes.untracked(CfgTypes.VLuminosityBlockRange())
163 # JSONfile = 'json.txt'
164 # myLumis = LumiList.LumiList(filename = JSONfile).getCMSSWString().split(',')
165 # process.source.lumisToProcess.extend(myLumis)
============ Jet energy correctiosn update ============== (not really running!???) ...