CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
miniAOD_tools.py
Go to the documentation of this file.
2 
4  process.patMuons.isoDeposits = cms.PSet()
5  process.patElectrons.isoDeposits = cms.PSet()
6  process.patTaus.isoDeposits = cms.PSet()
7  process.patPhotons.isoDeposits = cms.PSet()
8  #
9  process.patMuons.embedTrack = True # used for IDs
10  process.patMuons.embedCombinedMuon = True # used for IDs
11  process.patMuons.embedMuonBestTrack = True # used for IDs
12  process.patMuons.embedStandAloneMuon = True # maybe?
13  process.patMuons.embedPickyMuon = False # no, use best track
14  process.patMuons.embedTpfmsMuon = False # no, use best track
15  process.patMuons.embedDytMuon = False # no, use best track
16  #
17  # disable embedding of electron and photon associated objects already stored by the ReducedEGProducer
18  process.patElectrons.embedGsfElectronCore = False ## process.patElectrons.embed in AOD externally stored gsf electron core
19  process.patElectrons.embedSuperCluster = False ## process.patElectrons.embed in AOD externally stored supercluster
20  process.patElectrons.embedPflowSuperCluster = False ## process.patElectrons.embed in AOD externally stored supercluster
21  process.patElectrons.embedSeedCluster = False ## process.patElectrons.embed in AOD externally stored the electron's seedcluster
22  process.patElectrons.embedBasicClusters = False ## process.patElectrons.embed in AOD externally stored the electron's basic clusters
23  process.patElectrons.embedPreshowerClusters = False ## process.patElectrons.embed in AOD externally stored the electron's preshower clusters
24  process.patElectrons.embedPflowBasicClusters = False ## process.patElectrons.embed in AOD externally stored the electron's pflow basic clusters
25  process.patElectrons.embedPflowPreshowerClusters = False ## process.patElectrons.embed in AOD externally stored the electron's pflow preshower clusters
26  process.patElectrons.embedRecHits = False ## process.patElectrons.embed in AOD externally stored the RecHits - can be called from the PATElectronProducer
27  process.patElectrons.electronSource = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
28  process.patElectrons.electronIDSources = cms.PSet(
29  # configure many IDs as InputTag <someName> = <someTag> you
30  # can comment out those you don't want to save some disk space
31  eidRobustLoose = cms.InputTag("reducedEgamma","eidRobustLoose"),
32  eidRobustTight = cms.InputTag("reducedEgamma","eidRobustTight"),
33  eidLoose = cms.InputTag("reducedEgamma","eidLoose"),
34  eidTight = cms.InputTag("reducedEgamma","eidTight"),
35  eidRobustHighEnergy = cms.InputTag("reducedEgamma","eidRobustHighEnergy"),
36  )
37  process.elPFIsoDepositCharged.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
38  process.elPFIsoDepositChargedAll.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
39  process.elPFIsoDepositNeutral.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
40  process.elPFIsoDepositGamma.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
41  process.elPFIsoDepositPU.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
42  #
43  process.patPhotons.embedSuperCluster = False ## whether to process.patPhotons.embed in AOD externally stored supercluster
44  process.patPhotons.embedSeedCluster = False ## process.patPhotons.embed in AOD externally stored the photon's seedcluster
45  process.patPhotons.embedBasicClusters = False ## process.patPhotons.embed in AOD externally stored the photon's basic clusters
46  process.patPhotons.embedPreshowerClusters = False ## process.patPhotons.embed in AOD externally stored the photon's preshower clusters
47  process.patPhotons.embedRecHits = False ## process.patPhotons.embed in AOD externally stored the RecHits - can be called from the PATPhotonProducer
48  process.patPhotons.photonSource = cms.InputTag("reducedEgamma","reducedGedPhotons")
49  process.patPhotons.photonIDSources = cms.PSet(
50  PhotonCutBasedIDLoose = cms.InputTag('reducedEgamma',
51  'PhotonCutBasedIDLoose'),
52  PhotonCutBasedIDTight = cms.InputTag('reducedEgamma',
53  'PhotonCutBasedIDTight')
54  )
55 
56  process.phPFIsoDepositCharged.src = cms.InputTag("reducedEgamma","reducedGedPhotons")
57  process.phPFIsoDepositChargedAll.src = cms.InputTag("reducedEgamma","reducedGedPhotons")
58  process.phPFIsoDepositNeutral.src = cms.InputTag("reducedEgamma","reducedGedPhotons")
59  process.phPFIsoDepositGamma.src = cms.InputTag("reducedEgamma","reducedGedPhotons")
60  process.phPFIsoDepositPU.src = cms.InputTag("reducedEgamma","reducedGedPhotons")
61  #
62  process.selectedPatJets.cut = cms.string("pt > 10")
63  process.selectedPatMuons.cut = cms.string("pt > 5 || isPFMuon || (pt > 3 && (isGlobalMuon || isStandAloneMuon || numberOfMatches > 0 || muonID('RPCMuLoose')))")
64  process.selectedPatElectrons.cut = cms.string("")
65  process.selectedPatTaus.cut = cms.string("pt > 18. && tauID('decayModeFinding')> 0.5")
66  process.selectedPatPhotons.cut = cms.string("")
67  #
68  from PhysicsTools.PatAlgos.tools.jetTools import switchJetCollection
69  #switch to AK4 for CSA14/70X release (should be default in 71X)
70  switchJetCollection(process, jetSource = cms.InputTag('ak4PFJetsCHS'),
71  jetCorrections = ('AK4PFchs', cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute']), ''),
72  btagDiscriminators = ['jetBProbabilityBJetTags', 'jetProbabilityBJetTags', 'trackCountingHighPurBJetTags', 'trackCountingHighEffBJetTags', 'simpleSecondaryVertexHighEffBJetTags',
73  'simpleSecondaryVertexHighPurBJetTags', 'combinedSecondaryVertexBJetTags' , 'combinedInclusiveSecondaryVertexBJetTags' ],
74  )
75  #add CA8
76  from PhysicsTools.PatAlgos.tools.jetTools import addJetCollection
77  addJetCollection(process, labelName = 'AK8', jetSource = cms.InputTag('ak8PFJetsCHS'),algo= 'AK', rParam = 0.8, jetCorrections = ('AK7PFchs', cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute']), 'None') )
78  process.patJetsAK8.userData.userFloats.src = [] # start with empty list of user floats
79  process.selectedPatJetsAK8.cut = cms.string("pt > 100")
80  process.patJetGenJetMatchAK8.matched = 'slimmedGenJets'
81  ## AK8 groomed masses
82  from RecoJets.Configuration.RecoPFJets_cff import ak8PFJetsCHSPruned, ak8PFJetsCHSFiltered, ak8PFJetsCHSTrimmed
83  process.ak8PFJetsCHSPruned = ak8PFJetsCHSPruned.clone()
84  process.ak8PFJetsCHSTrimmed = ak8PFJetsCHSTrimmed.clone()
85  process.ak8PFJetsCHSFiltered = ak8PFJetsCHSFiltered.clone()
86  process.load("RecoJets.JetProducers.ak8PFJetsCHS_groomingValueMaps_cfi")
87  process.patJetsAK8.userData.userFloats.src += ['ak8PFJetsCHSPrunedLinks','ak8PFJetsCHSTrimmedLinks','ak8PFJetsCHSFilteredLinks']
88  ### CA8 groomed masses (for the matched jet): doesn't seem to work, it produces tons of warnings "Matched jets separated by dR greater than distMax=0.8"
89  # from RecoJets.Configuration.RecoPFJets_cff import ca8PFJetsCHSFiltered, ca8PFJetsCHSTrimmed # ca8PFJetsCHSPruned is already in AOD
90  # process.ca8PFJetsCHSTrimmed = ca8PFJetsCHSTrimmed.clone()
91  # process.ca8PFJetsCHSFiltered = ca8PFJetsCHSFiltered.clone()
92  # process.load("RecoJets.JetProducers.ca8PFJetsCHS_groomingValueMaps_cfi")
93  # process.ca8PFJetsCHSPrunedLinks.src = cms.InputTag("ak8PFJetsCHS")
94  # process.ca8PFJetsCHSTrimmedLinks.src = cms.InputTag("ak8PFJetsCHS")
95  # process.ca8PFJetsCHSFilteredLinks.src = cms.InputTag("ak8PFJetsCHS")
96  # process.patJetsAK8.userData.userFloats.src += ['ca8PFJetsCHSPrunedLinks','ca8PFJetsCHSTrimmedLinks','ca8PFJetsCHSFilteredLinks']
97  ## cmsTopTagger (note: it is already run in RECO, we just add the value)
98  process.cmsTopTagPFJetsCHSLinksAK8 = process.ak8PFJetsCHSPrunedLinks.clone()
99  process.cmsTopTagPFJetsCHSLinksAK8.src = cms.InputTag("ak8PFJetsCHS")
100  process.cmsTopTagPFJetsCHSLinksAK8.matched = cms.InputTag("cmsTopTagPFJetsCHS")
101  process.patJetsAK8.userData.userFloats.src += ['cmsTopTagPFJetsCHSLinksAK8']
102 
103  #
104  from PhysicsTools.PatAlgos.tools.trigTools import switchOnTriggerStandAlone
105  switchOnTriggerStandAlone( process, outputModule = '' )
106  process.patTrigger.packTriggerPathNames = cms.bool(True)
107  #
108  # apply type I/type I + II PFMEt corrections to pat::MET object
109  # and estimate systematic uncertainties on MET
110  from PhysicsTools.PatUtils.tools.metUncertaintyTools import runMEtUncertainties
111  addJetCollection(process, postfix = "ForMetUnc", labelName = 'AK5PF', jetSource = cms.InputTag('ak5PFJets'), jetCorrections = ('AK5PF', ['L1FastJet', 'L2Relative', 'L3Absolute'], ''))
112  runMEtUncertainties(process,jetCollection="selectedPatJetsAK5PFForMetUnc", outputModule=None)
113 
114  #keep this after all addJetCollections otherwise it will attempt computing them also for stuf with no taginfos
115  #Some useful BTAG vars
116  process.patJets.userData.userFunctions = cms.vstring(
117  '?(tagInfoSecondaryVertex().nVertices()>0)?(tagInfoSecondaryVertex().secondaryVertex(0).p4.M):(0)',
118  '?(tagInfoSecondaryVertex().nVertices()>0)?(tagInfoSecondaryVertex().secondaryVertex(0).nTracks):(0)',
119  '?(tagInfoSecondaryVertex().nVertices()>0)?(tagInfoSecondaryVertex().flightDistance(0).value):(0)',
120  '?(tagInfoSecondaryVertex().nVertices()>0)?(tagInfoSecondaryVertex().flightDistance(0).significance):(0)',
121  )
122  process.patJets.userData.userFunctionLabels = cms.vstring('vtxMass','vtxNtracks','vtx3DVal','vtx3DSig')
123  process.patJets.tagInfoSources = cms.VInputTag(cms.InputTag("secondaryVertexTagInfos"))
124  process.patJets.addTagInfos = cms.bool(True)
125  #
126  ## PU JetID
127  process.load("PhysicsTools.PatAlgos.slimming.pileupJetId_cfi")
128  process.patJets.userData.userFloats.src = [ cms.InputTag("pileupJetId:fullDiscriminant"), ]
129 
130 def miniAOD_customizeMC(process):
131  process.muonMatch.matched = "prunedGenParticles"
132  process.electronMatch.matched = "prunedGenParticles"
133  process.electronMatch.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
134  process.photonMatch.matched = "prunedGenParticles"
135  process.photonMatch.src = cms.InputTag("reducedEgamma","reducedGedPhotons")
136  process.tauMatch.matched = "prunedGenParticles"
137  process.tauGenJets.GenParticles = "prunedGenParticles"
138  process.patJetPartonMatch.matched = "prunedGenParticles"
139  process.patJetPartonMatch.mcStatus = [ 3, 23 ]
140  process.patJetGenJetMatch.matched = "slimmedGenJets"
141  process.patMuons.embedGenMatch = False
142  process.patElectrons.embedGenMatch = False
143  process.patPhotons.embedGenMatch = False
144  process.patTaus.embedGenMatch = False
145  process.patJets.embedGenPartonMatch = False
146  #also jet flavour must be switched to ak4
147  process.patJetFlavourAssociation.rParam = 0.4
148  #only for 70X/CSA14 to get ak4
149  process.load("RecoJets.JetProducers.ak4GenJets_cfi")
150  process.load("RecoJets.Configuration.GenJetParticles_cff")
151  process.slimmedGenJets.src = 'ak4GenJets'
152 
154  out.dropMetaData = cms.untracked.string('ALL')
155  out.fastCloning= cms.untracked.bool(False)
156  out.overrideInputFileSplitLevels = cms.untracked.bool(True)
157  out.compressionAlgorithm = cms.untracked.string('LZMA')
158 
160  from PhysicsTools.PatAlgos.tools.coreTools import runOnData
161  runOnData( process, outputModules = [] )
162 
164  miniAOD_customizeCommon(process)
165  miniAOD_customizeData(process)
166  return process
167 
169  miniAOD_customizeCommon(process)
170  miniAOD_customizeMC(process)
171  return process
def miniAOD_customizeAllMC
def miniAOD_customizeCommon
Definition: miniAOD_tools.py:3
def miniAOD_customizeAllData
def miniAOD_customizeOutput
tuple switchOnTriggerStandAlone
Definition: trigTools.py:276
def miniAOD_customizeData