CMS 3D CMS Logo

PFBRECO_cff.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 
3 # getting the ptrs
4 from RecoParticleFlow.PFProducer.pfLinker_cff import particleFlowPtrs
5 
8 pfPileUpIsoPFBRECO = pfPileUp.clone( PFCandidates = 'particleFlowPtrs' )
9 pfNoPileUpIsoPFBRECO = pfNoPileUp.clone( topCollection = 'pfPileUpIsoPFBRECO',
10  bottomCollection = 'particleFlowPtrs')
11 pfNoPileUpIsoPFBRECOTask = cms.Task(
12  pfPileUpIsoPFBRECO,
13  pfNoPileUpIsoPFBRECO
14  )
15 pfNoPileUpIsoPFBRECOSequence = cms.Sequence(pfNoPileUpIsoPFBRECOTask)
16 
18 
19 pfPileUpPFBRECO = pfPileUp.clone( PFCandidates = 'particleFlowPtrs' )
20 pfNoPileUpPFBRECO = pfNoPileUp.clone( topCollection = 'pfPileUpPFBRECO',
21  bottomCollection = 'particleFlowPtrs')
22 pfNoPileUpPFBRECOTask = cms.Task(
23  pfPileUpPFBRECO,
24  pfNoPileUpPFBRECO
25  )
26 pfNoPileUpPFBRECOSequence = cms.Sequence(pfNoPileUpPFBRECOTask)
27 
29 pfAllNeutralHadronsPFBRECO = pfAllNeutralHadrons.clone( src = 'pfNoPileUpIsoPFBRECO' )
31 pfAllChargedHadronsPFBRECO = pfAllChargedHadrons.clone( src = 'pfNoPileUpIsoPFBRECO' )
33 pfAllPhotonsPFBRECO = pfAllPhotons.clone( src = 'pfNoPileUpIsoPFBRECO' )
35 pfAllMuonsPFBRECO = pfAllMuons.clone( src = 'pfNoPileUpPFBRECO' )
36 pfAllMuonsClonesPFBRECO = pfAllMuonsClones.clone( src = 'pfAllMuonsPFBRECO' )
38 pfAllElectronsPFBRECO = pfAllElectrons.clone( src = 'pfNoMuonPFBRECO' )
39 pfAllElectronsClonesPFBRECO = pfAllElectronsClones.clone( src = 'pfAllElectronsPFBRECO' )
41 pfAllChargedParticlesPFBRECO = pfAllChargedParticles.clone( src = 'pfNoPileUpIsoPFBRECO' )
43 pfAllNeutralHadronsAndPhotonsPFBRECO = pfAllNeutralHadronsAndPhotons.clone( src = 'pfNoPileUpIsoPFBRECO' )
44 pfPileUpAllChargedParticlesPFBRECO = pfAllChargedParticles.clone( src = 'pfPileUpIsoPFBRECO' )
45 pfSortByTypePFBRECOTask = cms.Task(
46  pfAllNeutralHadronsPFBRECO,
47  pfAllChargedHadronsPFBRECO,
48  pfAllPhotonsPFBRECO,
49  # charged hadrons + electrons + muons
50  pfAllChargedParticlesPFBRECO,
51  # same, but from pile up
52  pfPileUpAllChargedParticlesPFBRECO,
53  pfAllNeutralHadronsAndPhotonsPFBRECO
54 # +
55 # pfAllElectronsPFBRECO+
56 # pfAllMuonsPFBRECO
57  )
58 pfSortByTypePFBRECOSequence = cms.Sequence(pfSortByTypePFBRECOTask)
59 
60 pfParticleSelectionPFBRECOTask = cms.Task(
61  pfNoPileUpIsoPFBRECOTask,
62  # In principle JME sequence should go here, but this is used in RECO
63  # in addition to here, and is used in the "first-step" PF process
64  # so needs to go later.
65  #pfNoPileUpJMESequence +
66  pfNoPileUpPFBRECOTask,
67  pfSortByTypePFBRECOTask
68  )
69 pfParticleSelectionPFBRECOSequence = cms.Sequence(pfParticleSelectionPFBRECOTask)
70 
72 pfSelectedPhotonsPFBRECO = pfSelectedPhotons.clone( src = 'pfAllPhotonsPFBRECO' )
75 pfIsolatedPhotonsPFBRECO = pfIsolatedPhotons.clone( src = 'pfSelectedPhotonsPFBRECO',
76  isolationValueMapsCharged = cms.VInputTag( cms.InputTag("phPFIsoValueCharged04PFIdPFBRECO") ),
77  isolationValueMapsNeutral = cms.VInputTag( cms.InputTag("phPFIsoValueNeutral04PFIdPFBRECO"),
78  cms.InputTag("phPFIsoValueGamma04PFIdPFBRECO") ),
79  deltaBetaIsolationValueMap = 'phPFIsoValuePU04PFIdPFBRECO' )
80 pfPhotonPFBRECOSequence = cms.Sequence(
81  pfSelectedPhotonsPFBRECO +
82  pfPhotonIsolationPFBRECOSequence +
83  # selecting isolated photons:
84  pfIsolatedPhotonsPFBRECO
85  )
86 
88 pfMuonsFromVertexPFBRECO = pfMuonsFromVertex.clone( src = 'pfAllMuonsPFBRECO' )
90 pfIsolatedMuonsPFBRECO = pfIsolatedMuons.clone( src = 'pfMuonsFromVertexPFBRECO' )
91 pfMuonsPFBRECO = pfIsolatedMuonsPFBRECO.clone(cut = cms.string("pt > 5 & muonRef.isAvailable()"))
92 pfMuonPFBRECOSequence = cms.Sequence(
93  pfAllMuonsPFBRECO +
94  pfMuonsFromVertexPFBRECO +
95  pfIsolatedMuonsPFBRECO+
96  pfMuonsPFBRECO
97  )
98 
100 pfElectronsFromVertexPFBRECO = pfElectronsFromVertex.clone( src = 'pfAllElectronsPFBRECO' )
102 pfIsolatedElectronsPFBRECO = pfIsolatedElectrons.clone( src = 'pfElectronsFromVertexPFBRECO' )
103 pfElectronsPFBRECO = pfIsolatedElectronsPFBRECO.clone( cut = cms.string(" pt > 5 & gsfElectronRef.isAvailable() & gsfTrackRef.hitPattern().numberOfLostHits('MISSING_INNER_HITS')<2"))
104 pfElectronPFBRECOSequence = cms.Sequence(
105  pfAllElectronsPFBRECO +
106  pfElectronsFromVertexPFBRECO +
107  pfIsolatedElectronsPFBRECO +
108  pfElectronsPFBRECO
109  )
110 
111 from CommonTools.ParticleFlow.Tools.jetTools import jetAlgo
112 pfJetsPFBRECO = jetAlgo('AK4')
113 pfJetsPFBRECO.src = 'pfNoElectronJMEPFBRECO'
114 pfJetsPtrsPFBRECO = cms.EDProducer("PFJetFwdPtrProducer",
115  src=cms.InputTag("pfJetsPFBRECO")
116  )
117 pfJetPFBRECOSequence = cms.Sequence(
118  pfJetsPFBRECO +
119  pfJetsPtrsPFBRECO
120  )
121 
123 
125 pfMETPFBRECO = pfMET.clone( jets = 'pfJetsPFBRECO' )
126 
127 ##delta beta weighting
128 #from CommonTools.ParticleFlow.deltaBetaWeights_cfi import *
129 #pfWeightedPhotonsPFBRECO = pfWeightedPhotons.clone( src = 'pfAllPhotonsPFBRECO',
130  #chargedFromPV = 'pfAllChargedParticlesPFBRECO',
131  #chargedFromPU = 'pfPileUpAllChargedParticlesPFBRECO' )
132 #pfWeightedNeutralHadronsPFBRECO = pfWeightedNeutralHadrons.clone( src = 'pfAllNeutralHadronsPFBRECO',
133  #chargedFromPV = 'pfAllChargedParticlesPFBRECO',
134  #chargedFromPU = 'pfPileUpAllChargedParticlesPFBRECO' )
135 #pfDeltaBetaWeightingPFBRECOSequence = cms.Sequence(pfWeightedPhotonsPFBRECO+pfWeightedNeutralHadronsPFBRECO)
136 
137 # sequential top projection cleaning
139 pfNoMuonPFBRECO = pfNoMuon.clone( topCollection = 'pfIsolatedMuonsPFBRECO',
140  bottomCollection = 'pfNoPileUpPFBRECO' )
141 pfNoMuonJMEPFBRECO = pfNoMuonJME.clone( topCollection = 'pfIsolatedMuonsPFBRECO' )
143 pfNoElectronPFBRECO = pfNoElectron.clone( topCollection = 'pfIsolatedElectronsPFBRECO',
144  bottomCollection = 'pfNoMuonPFBRECO' )
145 pfNoElectronJMEPFBRECO = pfNoElectronJME.clone( topCollection = 'pfIsolatedElectronsPFBRECO',
146  bottomCollection = 'pfNoMuonJMEPFBRECO' )
147 pfNoElectronJMEClonesPFBRECO = pfNoElectronJMEClones.clone( src = 'pfNoElectronJMEPFBRECO' )
149 pfNoJetPFBRECO = pfNoJet.clone( topCollection = 'pfJetsPtrsPFBRECO',
150  bottomCollection = 'pfNoElectronJMEPFBRECO' )
152 pfNoTauPFBRECO = pfNoTau.clone ( bottomCollection = 'pfJetsPtrsPFBRECO' )
153 pfNoTauClonesPFBRECO = pfNoTauClones.clone ( src = 'pfNoTauPFBRECO' )
154 
155 # generator tools
157 
158 PFBRECO = cms.Sequence(
159  particleFlowPtrs +
160  pfParticleSelectionPFBRECOSequence +
161  pfNoPileUpJMESequence +
162 # pfDeltaBetaWeightingPFBRECOSequence +
163  pfPhotonPFBRECOSequence +
164  pfMuonPFBRECOSequence +
165  pfNoMuonPFBRECO +
166  pfNoMuonJMEPFBRECO +
167  pfElectronPFBRECOSequence +
168  pfNoElectronPFBRECO +
169  pfNoElectronJMEPFBRECO +
170  pfNoElectronJMEClonesPFBRECO+
171  pfJetPFBRECOSequence +
172  pfNoJetPFBRECO +
173  pfTauSequence +
174  pfNoTauPFBRECO +
175  pfMETPFBRECO
176  )