1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
|
import FWCore.ParameterSet.Config as cms
# getting the ptrs
from RecoParticleFlow.PFProducer.pfLinker_cff import particleFlowPtrs
from CommonTools.ParticleFlow.pfPileUp_cfi import *
from CommonTools.ParticleFlow.TopProjectors.pfNoPileUp_cfi import *
pfPileUpIsoPFBRECO = pfPileUp.clone( PFCandidates = 'particleFlowPtrs' )
from Configuration.ProcessModifiers.pp_on_AA_cff import pp_on_AA
pp_on_AA.toModify(pfPileUpIsoPFBRECO, enable = False)
pfNoPileUpIsoPFBRECO = pfNoPileUp.clone( topCollection = 'pfPileUpIsoPFBRECO',
bottomCollection = 'particleFlowPtrs')
pfNoPileUpIsoPFBRECOTask = cms.Task(
pfPileUpIsoPFBRECO,
pfNoPileUpIsoPFBRECO
)
pfNoPileUpIsoPFBRECOSequence = cms.Sequence(pfNoPileUpIsoPFBRECOTask)
from CommonTools.ParticleFlow.pfNoPileUpJME_cff import *
pfPileUpPFBRECO = pfPileUp.clone( PFCandidates = 'particleFlowPtrs' )
pfNoPileUpPFBRECO = pfNoPileUp.clone( topCollection = 'pfPileUpPFBRECO',
bottomCollection = 'particleFlowPtrs')
pfNoPileUpPFBRECOTask = cms.Task(
pfPileUpPFBRECO,
pfNoPileUpPFBRECO
)
pfNoPileUpPFBRECOSequence = cms.Sequence(pfNoPileUpPFBRECOTask)
from CommonTools.ParticleFlow.ParticleSelectors.pfAllNeutralHadrons_cfi import *
pfAllNeutralHadronsPFBRECO = pfAllNeutralHadrons.clone( src = 'pfNoPileUpIsoPFBRECO' )
from CommonTools.ParticleFlow.ParticleSelectors.pfAllChargedHadrons_cfi import *
pfAllChargedHadronsPFBRECO = pfAllChargedHadrons.clone( src = 'pfNoPileUpIsoPFBRECO' )
from CommonTools.ParticleFlow.ParticleSelectors.pfAllPhotons_cfi import *
pfAllPhotonsPFBRECO = pfAllPhotons.clone( src = 'pfNoPileUpIsoPFBRECO' )
from CommonTools.ParticleFlow.ParticleSelectors.pfAllMuons_cfi import *
pfAllMuonsPFBRECO = pfAllMuons.clone( src = 'pfNoPileUpPFBRECO' )
pfAllMuonsClonesPFBRECO = pfAllMuonsClones.clone( src = 'pfAllMuonsPFBRECO' )
from CommonTools.ParticleFlow.ParticleSelectors.pfAllElectrons_cfi import *
pfAllElectronsPFBRECO = pfAllElectrons.clone( src = 'pfNoMuonPFBRECO' )
pfAllElectronsClonesPFBRECO = pfAllElectronsClones.clone( src = 'pfAllElectronsPFBRECO' )
from CommonTools.ParticleFlow.ParticleSelectors.pfAllChargedParticles_cfi import *
pfAllChargedParticlesPFBRECO = pfAllChargedParticles.clone( src = 'pfNoPileUpIsoPFBRECO' )
from CommonTools.ParticleFlow.ParticleSelectors.pfAllNeutralHadronsAndPhotons_cfi import *
pfAllNeutralHadronsAndPhotonsPFBRECO = pfAllNeutralHadronsAndPhotons.clone( src = 'pfNoPileUpIsoPFBRECO' )
pfPileUpAllChargedParticlesPFBRECO = pfAllChargedParticles.clone( src = 'pfPileUpIsoPFBRECO' )
pfSortByTypePFBRECOTask = cms.Task(
pfAllNeutralHadronsPFBRECO,
pfAllChargedHadronsPFBRECO,
pfAllPhotonsPFBRECO,
# charged hadrons , electrons , muons
pfAllChargedParticlesPFBRECO,
# same, but from pile up
pfPileUpAllChargedParticlesPFBRECO,
pfAllNeutralHadronsAndPhotonsPFBRECO
# ,
# pfAllElectronsPFBRECO,
# pfAllMuonsPFBRECO
)
pfSortByTypePFBRECOSequence = cms.Sequence(pfSortByTypePFBRECOTask)
pfParticleSelectionPFBRECOTask = cms.Task(
pfNoPileUpIsoPFBRECOTask,
# In principle JME sequence should go here, but this is used in RECO
# in addition to here, and is used in the "first-step" PF process
# so needs to go later.
#pfNoPileUpJMETask ,
pfNoPileUpPFBRECOTask,
pfSortByTypePFBRECOTask
)
pfParticleSelectionPFBRECOSequence = cms.Sequence(pfParticleSelectionPFBRECOTask)
from CommonTools.ParticleFlow.ParticleSelectors.pfSelectedPhotons_cfi import *
pfSelectedPhotonsPFBRECO = pfSelectedPhotons.clone( src = 'pfAllPhotonsPFBRECO' )
from CommonTools.ParticleFlow.Isolation.pfPhotonIsolationPFBRECO_cff import *
from CommonTools.ParticleFlow.Isolation.pfIsolatedPhotons_cfi import *
pfIsolatedPhotonsPFBRECO = pfIsolatedPhotons.clone(
src = 'pfSelectedPhotonsPFBRECO',
isolationValueMapsCharged = ["phPFIsoValueCharged04PFIdPFBRECO"],
isolationValueMapsNeutral = ["phPFIsoValueNeutral04PFIdPFBRECO",
"phPFIsoValueGamma04PFIdPFBRECO"],
deltaBetaIsolationValueMap = 'phPFIsoValuePU04PFIdPFBRECO'
)
pfPhotonPFBRECOTask = cms.Task(
pfSelectedPhotonsPFBRECO ,
pfPhotonIsolationPFBRECOTask ,
# selecting isolated photons:
pfIsolatedPhotonsPFBRECO
)
pfPhotonPFBRECOSequence = cms.Sequence(pfPhotonPFBRECOTask)
from CommonTools.ParticleFlow.ParticleSelectors.pfMuonsFromVertex_cfi import *
pfMuonsFromVertexPFBRECO = pfMuonsFromVertex.clone( src = 'pfAllMuonsPFBRECO' )
from CommonTools.ParticleFlow.Isolation.pfIsolatedMuons_cfi import *
pfIsolatedMuonsPFBRECO = pfIsolatedMuons.clone( src = 'pfMuonsFromVertexPFBRECO' )
pfMuonsPFBRECO = pfIsolatedMuonsPFBRECO.clone(cut = "pt > 5 & muonRef.isAvailable()")
pfMuonPFBRECOTask = cms.Task(
pfAllMuonsPFBRECO ,
pfMuonsFromVertexPFBRECO ,
pfIsolatedMuonsPFBRECO,
pfMuonsPFBRECO
)
pfMuonPFBRECOSequence = cms.Sequence(pfMuonPFBRECOTask)
from CommonTools.ParticleFlow.ParticleSelectors.pfElectronsFromVertex_cfi import *
pfElectronsFromVertexPFBRECO = pfElectronsFromVertex.clone( src = 'pfAllElectronsPFBRECO' )
from CommonTools.ParticleFlow.Isolation.pfIsolatedElectrons_cfi import *
pfIsolatedElectronsPFBRECO = pfIsolatedElectrons.clone( src = 'pfElectronsFromVertexPFBRECO' )
pfElectronsPFBRECO = pfIsolatedElectronsPFBRECO.clone( cut = " pt > 5 & gsfElectronRef.isAvailable() & gsfTrackRef.hitPattern().numberOfLostHits('MISSING_INNER_HITS')<2")
pfElectronPFBRECOTask = cms.Task(
pfAllElectronsPFBRECO ,
pfElectronsFromVertexPFBRECO ,
pfIsolatedElectronsPFBRECO ,
pfElectronsPFBRECO
)
pfElectronPFBRECOSequence = cms.Sequence(pfElectronPFBRECOTask)
from CommonTools.ParticleFlow.Tools.jetTools import jetAlgo
pfJetsPFBRECO = jetAlgo('AK4')
pfJetsPFBRECO.src = 'pfNoElectronJMEPFBRECO'
pfJetsPtrsPFBRECO = cms.EDProducer("PFJetFwdPtrProducer",
src=cms.InputTag("pfJetsPFBRECO")
)
pfJetPFBRECOTask = cms.Task(
pfJetsPFBRECO ,
pfJetsPtrsPFBRECO
)
pfJetPFBRECOSequence = cms.Sequence(pfJetPFBRECOTask)
from CommonTools.ParticleFlow.pfTaus_cff import *
from CommonTools.ParticleFlow.pfMET_cfi import *
pfMETPFBRECO = pfMET.clone( srcJets = 'pfJetsPFBRECO' )
##delta beta weighting
#from CommonTools.ParticleFlow.deltaBetaWeights_cfi import *
#pfWeightedPhotonsPFBRECO = pfWeightedPhotons.clone( src = 'pfAllPhotonsPFBRECO',
#chargedFromPV = 'pfAllChargedParticlesPFBRECO',
#chargedFromPU = 'pfPileUpAllChargedParticlesPFBRECO' )
#pfWeightedNeutralHadronsPFBRECO = pfWeightedNeutralHadrons.clone( src = 'pfAllNeutralHadronsPFBRECO',
#chargedFromPV = 'pfAllChargedParticlesPFBRECO',
#chargedFromPU = 'pfPileUpAllChargedParticlesPFBRECO' )
#pfDeltaBetaWeightingPFBRECOTask = cms.Task(pfWeightedPhotonsPFBRECO+pfWeightedNeutralHadronsPFBRECO)
#pfDeltaBetaWeightingPFBRECOSequence = cms.Sequence(pfDeltaBetaWeightingPFBRECOTask)
# sequential top projection cleaning
from CommonTools.ParticleFlow.TopProjectors.pfNoMuon_cfi import *
pfNoMuonPFBRECO = pfNoMuon.clone( topCollection = 'pfIsolatedMuonsPFBRECO',
bottomCollection = 'pfNoPileUpPFBRECO' )
pfNoMuonJMEPFBRECO = pfNoMuonJME.clone( topCollection = 'pfIsolatedMuonsPFBRECO' )
from CommonTools.ParticleFlow.TopProjectors.pfNoElectron_cfi import *
pfNoElectronPFBRECO = pfNoElectron.clone( topCollection = 'pfIsolatedElectronsPFBRECO',
bottomCollection = 'pfNoMuonPFBRECO' )
pfNoElectronJMEPFBRECO = pfNoElectronJME.clone( topCollection = 'pfIsolatedElectronsPFBRECO',
bottomCollection = 'pfNoMuonJMEPFBRECO' )
pfNoElectronJMEClonesPFBRECO = pfNoElectronJMEClones.clone( src = 'pfNoElectronJMEPFBRECO' )
from CommonTools.ParticleFlow.TopProjectors.pfNoJet_cff import *
pfNoJetPFBRECO = pfNoJet.clone( topCollection = 'pfJetsPtrsPFBRECO',
bottomCollection = 'pfNoElectronJMEPFBRECO' )
from CommonTools.ParticleFlow.TopProjectors.pfNoTau_cff import *
pfNoTauPFBRECO = pfNoTau.clone ( bottomCollection = 'pfJetsPtrsPFBRECO' )
pfNoTauClonesPFBRECO = pfNoTauClones.clone ( src = 'pfNoTauPFBRECO' )
# generator tools
from CommonTools.ParticleFlow.genForPF2PAT_cff import *
PFBRECOTask = cms.Task(
particleFlowPtrs ,
pfParticleSelectionPFBRECOTask ,
pfNoPileUpJMETask ,
# pfDeltaBetaWeightingPFBRECOTask ,
pfPhotonPFBRECOTask ,
pfMuonPFBRECOTask ,
pfNoMuonPFBRECO ,
pfNoMuonJMEPFBRECO ,
pfElectronPFBRECOTask ,
pfNoElectronPFBRECO ,
pfNoElectronJMEPFBRECO ,
pfNoElectronJMEClonesPFBRECO,
pfJetPFBRECOTask ,
pfNoJetPFBRECO ,
pfTauTask ,
pfNoTauPFBRECO ,
pfMETPFBRECO
)
PFBRECO = cms.Sequence(PFBRECOTask)
|