1 from __future__
import print_function
11 '''Initializing rho to None. The user is responsible for setting it to the right value 12 to get the rho-corrected isolation.''' 13 super(Photon, self).
__init__(*args, **kwargs)
21 return self.physObj.hadTowOverEm()
24 return self.physObj.
r9()
36 isoCharged = self.ftprAbsIsoCharged03
if hasattr(self,
'ftprAbsIsoCharged03')
else self.physObj.
chargedHadronIso()
37 if corr
is None or corr ==
"":
return isoCharged
38 elif corr ==
"rhoArea":
return max(isoCharged-self.
rho*self.EffectiveArea03[0],0)
39 else:
raise RuntimeError(
"Photon isolation correction '%s' not yet implemented in Photon.py" % corr)
42 isoNHad = self.ftprAbsIsoNHad03
if hasattr(self,
'ftprAbsIsoNHad03')
else self.physObj.
neutralHadronIso()
43 if corr
is None or corr ==
"":
return isoNHad
44 elif corr ==
"rhoArea":
return max(isoNHad-self.
rho*self.EffectiveArea03[1],0)
45 else:
raise RuntimeError(
"Photon isolation correction '%s' not yet implemented in Photon.py" % corr)
48 isoPho = self.ftprAbsIsoPho03
if hasattr(self,
'ftprAbsIsoPho03')
else self.physObj.
photonIso()
49 if corr
is None or corr ==
"":
return isoPho
50 elif corr ==
"rhoArea":
return max(isoPho-self.
rho*self.EffectiveArea03[2],0)
51 else:
raise RuntimeError(
"Photon isolation correction '%s' not yet implemented in Photon.py" % corr)
57 if name ==
"PhotonCutBasedIDLoose_CSA14":
58 if abs(self.physObj.
eta())<1.479 :
64 elif name ==
"PhotonCutBasedIDLoose_PHYS14":
65 if abs(self.physObj.
eta())<1.479 :
72 print(
"WARNING! Unkown photon ID! Will return true!")
76 if abs(self.physObj.
eta())<1.479 :
82 if self.
hOVERe() > hovereThresh : keepThisPhoton =
False 90 "POG_PHYS14_25ns_Loose": {
"conversionVeto": [
True,
True],
"H/E":[0.028,0.093],
"sigmaIEtaIEta":[0.0107,0.0272],
91 "chaHadIso":[2.67,1.79],
"neuHadIso":[[7.23,0.0028,0.5408],[8.89,0.01725]],
"phoIso":[[2.11,0.0014],[3.09,0.0091]]},
94 "POG_PHYS14_25ns_Loose_old": {
"conversionVeto": [
True,
True],
"H/E":[0.048,0.069],
"sigmaIEtaIEta":[0.0106,0.0266],
95 "chaHadIso":[2.56,3.12],
"neuHadIso":[[3.74,0.0025,0.],[17.11,0.0118,0.]],
"phoIso":[[2.68,0.001],[2.70,0.0059]]},
97 "POG_PHYS14_25ns_Medium": {
"conversionVeto": [
True,
True],
"H/E":[0.012,0.023],
"sigmaIEtaIEta":[0.0100,0.0267],
98 "chaHadIso":[1.79,1.09],
"neuHadIso":[[0.16,0.0028,0.5408],[4.31,0.0172]],
"phoIso":[[1.90,0.0014],[1.90,0.0091]]},
100 "POG_PHYS14_25ns_Tight": {
"conversionVeto": [
True,
True],
"H/E":[0.010,0.015],
"sigmaIEtaIEta":[0.0100,0.0265],
101 "chaHadIso":[1.66,1.04],
"neuHadIso":[[0.14,0.0028,0.5408],[3.89,0.0172]],
"phoIso":[[1.40,0.0014],[1.40,0.0091]]},
104 "POG_SPRING15_50ns_Loose": {
"conversionVeto": [
True,
True],
"H/E":[0.05,0.05],
"sigmaIEtaIEta":[0.0103,0.0277],
105 "chaHadIso":[2.44,1.84],
"neuHadIso":[[2.57,0.0044,0.5809],[4.00, 0.0040,0.9402]],
"phoIso":[[1.92,0.0043],[2.15,0.0041]]},
107 "POG_SPRING15_50ns_Medium": {
"conversionVeto": [
True,
True],
"H/E":[0.05,0.05],
"sigmaIEtaIEta":[0.0100,0.0267],
108 "chaHadIso":[1.31,1.25],
"neuHadIso":[[0.60,0.0044,0.5809],[1.65, 0.0040,0.9402]],
"phoIso":[[1.33,0.0043],[1.02,0.0041]]},
110 "POG_SPRING15_50ns_Tight": {
"conversionVeto": [
True,
True],
"H/E":[0.05,0.05],
"sigmaIEtaIEta":[0.0100,0.0267],
111 "chaHadIso":[0.91,0.65],
"neuHadIso":[[0.33,0.0044,0.5809],[0.93, 0.0040,0.9402]],
"phoIso":[[0.61,0.0043],[0.54,0.0041]]},
114 "POG_SPRING15_25ns_Loose": {
"conversionVeto": [
True,
True],
"H/E":[0.05,0.05],
"sigmaIEtaIEta":[0.0102,0.0274],
115 "chaHadIso":[3.32,1.97],
"neuHadIso":[[1.92,0.0014,0.000019],[11.86, 0.00139,0.000025]],
"phoIso":[[0.81,0.0053],[0.83,0.0034]]},
117 "POG_SPRING15_25ns_Medium": {
"conversionVeto": [
True,
True],
"H/E":[0.05,0.05],
"sigmaIEtaIEta":[0.0102,0.0268],
118 "chaHadIso":[1.37,1.10],
"neuHadIso":[[1.06,0.0014,0.000019],[2.69, 0.00139,0.000025]],
"phoIso":[[0.28,0.0053],[0.39,0.0034]]},
120 "POG_SPRING15_25ns_Tight": {
"conversionVeto": [
True,
True],
"H/E":[0.05,0.05],
"sigmaIEtaIEta":[0.0100,0.0268],
121 "chaHadIso":[0.76,0.56],
"neuHadIso":[[0.97,0.0014,0.000019],[2.09, 0.00139,0.000025]],
"phoIso":[[0.08,0.0053],[0.16,0.0034]]},
124 "POG_CSA14_25ns_Loose": {
"conversionVeto": [
True,
True],
"H/E":[0.553,0.062],
"sigmaIEtaIEta":[0.0099,0.0284],
125 "chaHadIso":[2.49,1.04],
"neuHadIso":[[15.43,0.007],[19.71,0.0129]],
"phoIso":[[9.42,0.0033],[11.88,0.0108]]},
127 "POG_CSA14_25ns_Medium": {
"conversionVeto": [
True,
True],
"H/E":[0.058,0.020],
"sigmaIEtaIEta":[0.0099,0.0268],
128 "chaHadIso":[1.91,0.82],
"neuHadIso":[[4.66,0.007],[14.65,0.0129]],
"phoIso":[[4.29,0.0033],[4.06,0.0108]]},
130 "POG_CSA14_25ns_Tight": {
"conversionVeto": [
True,
True],
"H/E":[0.019,0.016],
"sigmaIEtaIEta":[0.0099,0.0263],
131 "chaHadIso":[1.61,0.69],
"neuHadIso":[[3.98,0.007],[4.52,0.0129]],
"phoIso":[[3.01,0.0033],[3.61,0.0108]]},
136 baseWP = re.split(
'_',name)
137 if "looseSieie" in baseWP[-1]:
139 WPs[
"_".
join(baseWP)][
"sigmaIEtaIEta"] = [0.015,0.035]
141 return WPs[
"_".
join(baseWP)]
146 if abs(self.physObj.
eta())<1.479 :
153 return slope*self.pt()+offset
156 return offset + term_1*self.pt() + term_2*
pow(self.pt(),2)
159 return offset +
exp(slope_exp*self.pt()+offset_exp)
166 if self.
CutBasedIDWP(name)[
"conversionVeto"][idForBarrel]:
167 if (conversionSafe_eleVeto==
False and self.physObj.hasPixelSeed())
or (conversionSafe_eleVeto==
True and self.physObj.passElectronVeto()==
False):
184 passPhotonIso =
False 186 if "POG_PHYS14_25ns" in name
and idForBarrel == 0:
188 passPhotonIso =
False 189 elif "POG_SPRING15_50ns" in name:
191 passPhotonIso =
False 192 elif "POG_SPRING15_25ns" in name:
194 passPhotonIso =
False 197 passPhotonIso =
False 200 passPhotonIso =
False 206 setattr(ROOT.pat.Photon,
"recoPhotonIso", ROOT.reco.Photon.photonIso)
207 setattr(ROOT.pat.Photon,
"recoNeutralHadronIso", ROOT.reco.Photon.neutralHadronIso)
208 setattr(ROOT.pat.Photon,
"recoChargedHadronIso", ROOT.reco.Photon.chargedHadronIso)
def photonIDCSA14(self, name, sidebands=False)
def full5x5_sigmaIetaIeta(self)
def passPhotonID(self, name, conversionSafe_eleVeto=False)
def photonIso(self, corr=None)
def neutralHadronIso(self, corr=None)
def CutBasedIDWP(self, name)
def chargedHadronIso(self, corr=None)
def calScaledIsoValueExp(self, offset, slope_exp, offset_exp)
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Abs< T >::type abs(const T &t)
def passPhotonIso(self, name, isocorr)
static std::string join(char **cmd)
def calScaledIsoValueQuadr(self, offset, term_1, term_2)
def __init__(self, args, kwargs)
def calScaledIsoValueLin(self, offset, slope)
Power< A, B >::type pow(const A &a, const B &b)