2 from PhysicsTools.Heppy.analyzers.core.Analyzer
import Analyzer
3 from PhysicsTools.Heppy.analyzers.core.AutoHandle
import AutoHandle
4 from PhysicsTools.Heppy.physicsobjects.PhysicsObjects
import Jet
6 from PhysicsTools.HeppyCore.statistics.counter
import Counter, Counters
7 from PhysicsTools.Heppy.physicsutils.JetReCalibrator
import JetReCalibrator
12 good = [
True for j
in jets ]
15 for i,j
in enumerate(jets):
16 d2i =
deltaR2(l.eta(),l.phi(), j.eta(),j.phi())
19 if ibest != -1: good[ibest] =
False
20 return [ j
for (i,j)
in enumerate(jets)
if good[i] ==
True ]
24 """Taken from RootTools.JetAnalyzer, simplified, modified, added corrections """
25 def __init__(self, cfg_ana, cfg_comp, looperName):
26 super(JetAnalyzer,self).
__init__(cfg_ana, cfg_comp, looperName)
27 mcGT = cfg_ana.mcGT
if hasattr(cfg_ana,
'mcGT')
else "START53_V27"
28 dataGT = cfg_ana.dataGT
if hasattr(cfg_ana,
'dataGT')
else "FT_53_V21_AN5"
29 self.
shiftJEC = self.cfg_ana.shiftJEC
if hasattr(self.cfg_ana,
'shiftJEC')
else 0
32 if self.cfg_comp.isMC:
38 self.
doPuId = self.cfg_ana.doPuId
if hasattr(self.cfg_ana,
'doPuId')
else True
39 self.
jetLepDR = self.cfg_ana.jetLepDR
if hasattr(self.cfg_ana,
'jetLepDR')
else 0.5
40 self.
lepPtMin = self.cfg_ana.minLepPt
if hasattr(self.cfg_ana,
'minLepPt')
else -1
41 self.
jetGammaDR = self.cfg_ana.jetGammaDR
if hasattr(self.cfg_ana,
'jetGammaDR')
else 0.4
42 self.
gammaPtMin = self.cfg_ana.minGammaPt
if hasattr(self.cfg_ana,
'minGammaPt')
else -1
43 self.
gammaEtaCentral = self.cfg_ana.gammaEtaCentral
if hasattr(self.cfg_ana,
'gammaEtaCentral')
else 0
47 self.handles[
'jets'] =
AutoHandle( self.cfg_ana.jetCol,
'std::vector<pat::Jet>' )
48 self.handles[
'jets4MVA'] =
AutoHandle( self.cfg_ana.jetCol4MVA,
'std::vector<pat::Jet>' )
49 self.handles[
'rho'] =
AutoHandle( (
'fixedGridRhoFastjetAll',
'',
''),
'double' )
55 self.readCollections( event.input )
56 rho = float(self.handles[
'rho'].product()[0])
60 allJets =
map(Jet, self.handles[
'jets'].product())
61 event.deltaMetFromJEC = [0.,0.]
65 corr.correctAll(allJets, rho, delta=self.
shiftJEC, metShift=event.deltaMetFromJEC)
66 event.allJetsUsedForMET = allJets
70 if self.cfg_ana.jetCol4MVA != self.cfg_ana.jetCol:
71 allJets4MVA =
map(Jet, self.handles[
'jets4MVA'].product())
75 corr.correctAll(allJets4MVA, rho, delta=self.
shiftJEC)
77 allJets4MVA = allJets[:]
88 event.jetsAllNoID = []
92 event.jetsAllNoID.append(jet)
94 event.jets.append(jet)
95 event.jetsIdOnly.append(jet)
97 event.jetsFailId.append(jet)
99 event.jetsIdOnly.append(jet)
102 leptons = [ l
for l
in event.selectedLeptons
if l.pt() > self.
lepPtMin ]
103 if self.cfg_ana.cleanJetsFromTaus:
104 leptons = leptons[:] + event.selectedTaus
109 event.cleanJets = [j
for j
in event.cleanJetsAll
if abs(j.eta()) < self.cfg_ana.jetEtaCentral ]
110 event.cleanJetsFwd = [j
for j
in event.cleanJetsAll
if abs(j.eta()) >= self.cfg_ana.jetEtaCentral ]
113 photons = [ g
for g
in event.selectedPhotonsCentral ]
115 event.gamma_cleanJets = [j
for j
in event.gamma_cleanJetsAll
if abs(j.eta()) < self.cfg_ana.jetEtaCentral ]
116 event.gamma_cleanJetsFwd = [j
for j
in event.gamma_cleanJetsAll
if abs(j.eta()) >= self.cfg_ana.jetEtaCentral ]
120 leptons = event.inclusiveLeptons
if hasattr(event,
'inclusiveLeptons')
else event.selectedLeptons
134 jet.puJetIdPassed = jet.puJetId()
135 jet.pfJetIdPassed = jet.jetID(
'POG_PFID_Loose')
136 if self.cfg_ana.relaxJetId:
139 return jet.pfJetIdPassed
and (jet.puJetIdPassed
or not(self.
doPuId))
143 return jet.pt() > self.cfg_ana.jetPt
and \
144 abs( jet.eta() ) < self.cfg_ana.jetEta;
147 setattr(JetAnalyzer,
"defaultConfig", cfg.Analyzer(
148 class_object = JetAnalyzer,
149 jetCol =
'slimmedJets',
150 jetCol4MVA =
'slimmedJets',
158 recalibrateJets =
False,
160 cleanJetsFromTaus =
False,
def matchObjectCollection
Abs< T >::type abs(const T &t)
double deltaR2(const T1 &t1, const T2 &t2)