CMS 3D CMS Logo

cutBasedPhotonID_tools.py
Go to the documentation of this file.
1 
2 import FWCore.ParameterSet.Config as cms
3 
4 # Barrel/endcap division in eta
5 ebCutOff = 1.479
6 
7 # ===============================================
8 # Define containers used by cut definitions
9 # ===============================================
10 
12  """
13  This is a container class to hold numerical cut values for either
14  the barrel or endcap set of cuts
15  """
16  def __init__(self,
17  idName,
18  hOverECut,
19  full5x5_sigmaIEtaIEtaCut,
20  # Isolation cuts are generally pt-dependent: cut = C1 + pt * C2
21  absPFChaHadIsoWithEACut_C1,
22  absPFChaHadIsoWithEACut_C2,
23  absPFNeuHadIsoWithEACut_C1,
24  absPFNeuHadIsoWithEACut_C2,
25  absPFPhoIsoWithEACut_C1,
26  absPFPhoIsoWithEACut_C2
27  ):
28  self.idName = idName
29  self.hOverECut = hOverECut
30  self.full5x5_sigmaIEtaIEtaCut = full5x5_sigmaIEtaIEtaCut
31  self.absPFChaHadIsoWithEACut_C1 = absPFChaHadIsoWithEACut_C1 # charged hadron isolation C1
32  self.absPFChaHadIsoWithEACut_C2 = absPFChaHadIsoWithEACut_C2 # ........ C2
33  self.absPFNeuHadIsoWithEACut_C1 = absPFNeuHadIsoWithEACut_C1 # neutral hadron isolation C1
34  self.absPFNeuHadIsoWithEACut_C2 = absPFNeuHadIsoWithEACut_C2 # ........ C2
35  self.absPFPhoIsoWithEACut_C1 = absPFPhoIsoWithEACut_C1 # photon isolation C1
36  self.absPFPhoIsoWithEACut_C2 = absPFPhoIsoWithEACut_C2 # ........ C2
37 
39  """
40  This is a container class to hold numerical cut values for either
41  the barrel or endcap set of cuts
42  This version of the container is different from the previous one
43  by the fact that it contains three constants instead of two for
44  the neutral hadron isolation cut, for exponantial parameterization
45  """
46  def __init__(self,
47  idName,
48  hOverECut,
49  full5x5_sigmaIEtaIEtaCut,
50  # Isolation cuts are generally pt-dependent: cut = C1 + pt * C2
51  # except for the neutral hadron isolation where it is cut = C1+exp(pt*C2+C3)
52  absPFChaHadIsoWithEACut_C1,
53  absPFChaHadIsoWithEACut_C2,
54  absPFNeuHadIsoWithEACut_C1,
55  absPFNeuHadIsoWithEACut_C2,
56  absPFNeuHadIsoWithEACut_C3,
57  absPFPhoIsoWithEACut_C1,
58  absPFPhoIsoWithEACut_C2
59  ):
60  self.idName = idName
61  self.hOverECut = hOverECut
62  self.full5x5_sigmaIEtaIEtaCut = full5x5_sigmaIEtaIEtaCut
63  self.absPFChaHadIsoWithEACut_C1 = absPFChaHadIsoWithEACut_C1 # charged hadron isolation C1
64  self.absPFChaHadIsoWithEACut_C2 = absPFChaHadIsoWithEACut_C2 # ........ C2
65  self.absPFNeuHadIsoWithEACut_C1 = absPFNeuHadIsoWithEACut_C1 # neutral hadron isolation C1
66  self.absPFNeuHadIsoWithEACut_C2 = absPFNeuHadIsoWithEACut_C2 # ........ C2
67  self.absPFNeuHadIsoWithEACut_C3 = absPFNeuHadIsoWithEACut_C3 # ........ C3
68  self.absPFPhoIsoWithEACut_C1 = absPFPhoIsoWithEACut_C1 # photon isolation C1
69  self.absPFPhoIsoWithEACut_C2 = absPFPhoIsoWithEACut_C2 # ........ C2
70 
72  """
73  A container class that holds the names of the isolation maps in the event record
74  and the names of the files with the effective area constants for pile-up corrections
75  """
76  def __init__(self,
77  chHadIsolationMapName,
78  chHadIsolationEffAreas,
79  neuHadIsolationMapName,
80  neuHadIsolationEffAreas,
81  phoIsolationMapName,
82  phoIsolationEffAreas
83  ):
84  self.chHadIsolationMapName = chHadIsolationMapName
85  self.chHadIsolationEffAreas = chHadIsolationEffAreas
86  self.neuHadIsolationMapName = neuHadIsolationMapName
87  self.neuHadIsolationEffAreas = neuHadIsolationEffAreas
88  self.phoIsolationMapName = phoIsolationMapName
89  self.phoIsolationEffAreas = phoIsolationEffAreas
90 
91 # ==============================================================
92 # Define individual cut configurations used by complete cut sets
93 # ==============================================================
94 
95 # The mininum pt cut is set to 5 GeV
97  return cms.PSet(
98  cutName = cms.string("MinPtCut"),
99  minPt = cms.double(5.0),
100  needsAdditionalProducts = cms.bool(False),
101  isIgnored = cms.bool(False)
102  )
103 
104 # Take all particles in the eta ranges 0-ebCutOff and ebCutOff-2.5
106  return cms.PSet(
107  cutName = cms.string("PhoSCEtaMultiRangeCut"),
108  useAbsEta = cms.bool(True),
109  allowedEtaRanges = cms.VPSet(
110  cms.PSet( minEta = cms.double(0.0),
111  maxEta = cms.double(ebCutOff) ),
112  cms.PSet( minEta = cms.double(ebCutOff),
113  maxEta = cms.double(2.5) )
114  ),
115  needsAdditionalProducts = cms.bool(False),
116  isIgnored = cms.bool(False)
117  )
118 
119 # Configure the cut on H/E
120 def psetPhoHcalOverEcalBcCut( wpEB, wpEE):
121  """
122  Arguments: two containers of working point cut values of the type WorkingPoint_*
123  """
124  return cms.PSet(
125  cutName = cms.string('PhotonHcalOverEcalBcCut'),
126  hcalOverEcalCutValueEB = cms.double( wpEB.hOverECut ),
127  hcalOverEcalCutValueEE = cms.double( wpEE.hOverECut ),
128  barrelCutOff = cms.double(ebCutOff),
129  needsAdditionalProducts = cms.bool(False),
130  isIgnored = cms.bool(False)
131  )
132 
133 # Configure the cut on full5x5 sigmaIEtaIEta that uses a ValueMap,
134 # relying on an upstream producer that creates it. This was necessary
135 # for photons up to 7.2.0.
137  """
138  Arguments: two containers of working point cut values of the type WorkingPoint_*
139  """
140  return cms.PSet(
141  cutName = cms.string('PhoFull5x5SigmaIEtaIEtaValueMapCut'),
142  cutValueEB = cms.double( wpEB.full5x5_sigmaIEtaIEtaCut ),
143  cutValueEE = cms.double( wpEE.full5x5_sigmaIEtaIEtaCut ),
144  full5x5SigmaIEtaIEtaMap = cms.InputTag('photonIDValueMapProducer:phoFull5x5SigmaIEtaIEta'),
145  barrelCutOff = cms.double(ebCutOff),
146  needsAdditionalProducts = cms.bool(True),
147  isIgnored = cms.bool(False)
148  )
149 
150 # Configure the cut on full5x5 sigmaIEtaIEta that uses the native Photon field
151 # with this variable (works for releases past 7.2.0).
153  """
154  Arguments: two containers of working point cut values of the type WorkingPoint_*
155  """
156  return cms.PSet(
157  cutName = cms.string('PhoFull5x5SigmaIEtaIEtaCut'),
158  cutValueEB = cms.double( wpEB.full5x5_sigmaIEtaIEtaCut ),
159  cutValueEE = cms.double( wpEE.full5x5_sigmaIEtaIEtaCut ),
160  barrelCutOff = cms.double(ebCutOff),
161  needsAdditionalProducts = cms.bool(False),
162  isIgnored = cms.bool(False)
163  )
164 
165 # Configure the cut on the charged hadron isolation that uses
166 # the linear pt scaling for barrel and endcap
167 def psetChHadIsoWithEALinScalingCut(wpEB, wpEE, isoInputs):
168  """
169  Arguments: two containers of working point cut values of the type WorkingPoint_*
170  The third argument contains data for isolation calculation.
171  The cut is (for lessThan==True), otherwise replace "<" with ">="
172  X < constTerm + linearPtTerm*pt + quadPtTerm* pt*pt + rho*EA
173  """
174  return cms.PSet(
175  cutName = cms.string('PhoGenericRhoPtScaledCut'),
176  cutVariable = cms.string("chargedHadronIso"),
177  lessThan = cms.bool(True),
178  # cut
179  constTermEB = cms.double( wpEB.absPFChaHadIsoWithEACut_C1 ),
180  constTermEE = cms.double( wpEE.absPFChaHadIsoWithEACut_C1 ),
181  linearPtTermEB = cms.double( wpEB.absPFChaHadIsoWithEACut_C2 ),
182  linearPtTermEE = cms.double( wpEE.absPFChaHadIsoWithEACut_C2 ),
183  quadPtTermEB = cms.double( 0. ),
184  quadPtTermEE = cms.double( 0. ),
185  needsAdditionalProducts = cms.bool(True),
186  isIgnored = cms.bool(False),
187  rho = cms.InputTag("fixedGridRhoFastjetAll"),
188  effAreasConfigFile = cms.FileInPath( isoInputs.chHadIsolationEffAreas )
189  )
190 
191 # Configure the cut on the neutral hadron isolation that uses
192 # the linear pt scaling for barrel and endcap
193 def psetNeuHadIsoWithEALinScalingCut( wpEB, wpEE, isoInputs):
194  """
195  Arguments: two containers of working point cut values of the type WorkingPoint_*
196  The third argument contains data for isolation calculation.
197  """
198  return cms.PSet(
199  cutName = cms.string('PhoGenericRhoPtScaledCut'),
200  cutVariable = cms.string("neutralHadronIso"),
201  lessThan = cms.bool(True),
202  # cut
203  constTermEB = cms.double( wpEB.absPFNeuHadIsoWithEACut_C1 ),
204  constTermEE = cms.double( wpEE.absPFNeuHadIsoWithEACut_C1 ),
205  linearPtTermEB = cms.double( wpEB.absPFNeuHadIsoWithEACut_C2 ),
206  linearPtTermEE = cms.double( wpEE.absPFNeuHadIsoWithEACut_C2 ),
207  quadPtTermEB = cms.double( 0. ),
208  quadPtTermEE = cms.double( 0. ),
209  needsAdditionalProducts = cms.bool(True),
210  isIgnored = cms.bool(False),
211  rho = cms.InputTag("fixedGridRhoFastjetAll"),
212  effAreasConfigFile = cms.FileInPath( isoInputs.neuHadIsolationEffAreas )
213  )
214 
215 # Configure the cut on the neutral hadron isolation that uses
216 # the exponential pt scaling for barrel and the linear pt scaling for endcap
217 def psetNeuHadIsoWithEAExpoScalingEBCut(wpEB, wpEE, isoInputs):
218  """
219  Arguments: two containers of working point cut values of the type WorkingPoint_*
220  The third argument contains data for isolation calculation.
221  """
222  return cms.PSet(
223  cutName = cms.string('PhoAnyPFIsoWithEAAndExpoScalingEBCut'), # Neutral hadrons isolation block
224  # Barrel: cut = c1 + expo(pt*c2+c3)
225  C1_EB = cms.double( wpEB.absPFNeuHadIsoWithEACut_C1 ),
226  C2_EB = cms.double( wpEB.absPFNeuHadIsoWithEACut_C2 ),
227  C3_EB = cms.double( wpEB.absPFNeuHadIsoWithEACut_C3 ),
228  # Endcap: cut = c1 + pt*c2
229  C1_EE = cms.double( wpEE.absPFNeuHadIsoWithEACut_C1 ),
230  C2_EE = cms.double( wpEE.absPFNeuHadIsoWithEACut_C2 ),
231  anyPFIsoMap = cms.InputTag( isoInputs.neuHadIsolationMapName ),
232  barrelCutOff = cms.double(ebCutOff),
233  useRelativeIso = cms.bool(False),
234  needsAdditionalProducts = cms.bool(True),
235  isIgnored = cms.bool(False),
236  rho = cms.InputTag("fixedGridRhoFastjetAll"),
237  effAreasConfigFile = cms.FileInPath( isoInputs.neuHadIsolationEffAreas )
238  )
239 
240 # Configure the cut on the neutral hadron isolation that uses
241 # the exponential pt scaling for both barrel and endcap
242 def psetNeuHadIsoWithEAExpoScalingCut(wpEB, wpEE, isoInputs):
243  """
244  Arguments: two containers of working point cut values of the type WorkingPoint_*
245  The third argument contains data for isolation calculation.
246  """
247  return cms.PSet(
248  cutName = cms.string('PhoAnyPFIsoWithEAAndExpoScalingCut'), # Neutral hadrons isolation block
249  # Barrel: cut = c1 + expo(pt*c2+c3)
250  C1_EB = cms.double( wpEB.absPFNeuHadIsoWithEACut_C1 ),
251  C2_EB = cms.double( wpEB.absPFNeuHadIsoWithEACut_C2 ),
252  C3_EB = cms.double( wpEB.absPFNeuHadIsoWithEACut_C3 ),
253  # Endcap: cut = cut = c1 + expo(pt*c2+c3)
254  C1_EE = cms.double( wpEE.absPFNeuHadIsoWithEACut_C1 ),
255  C2_EE = cms.double( wpEE.absPFNeuHadIsoWithEACut_C2 ),
256  C3_EE = cms.double( wpEE.absPFNeuHadIsoWithEACut_C3 ),
257  anyPFIsoMap = cms.InputTag( isoInputs.neuHadIsolationMapName ),
258  barrelCutOff = cms.double(ebCutOff),
259  useRelativeIso = cms.bool(False),
260  needsAdditionalProducts = cms.bool(True),
261  isIgnored = cms.bool(False),
262  rho = cms.InputTag("fixedGridRhoFastjetAll"),
263  effAreasConfigFile = cms.FileInPath( isoInputs.neuHadIsolationEffAreas )
264  )
265 
266 # Configure the cut on the neutral hadron isolation that uses
267 # the quadratic polynomial pt scaling for both barrel and endcap
268 def psetNeuHadIsoWithEAQuadScalingCut(wpEB, wpEE, isoInputs):
269  """
270  Arguments: two containers of working point cut values of the type WorkingPoint_*
271  The third argument contains data for isolation calculation.
272  """
273  return cms.PSet(
274  cutName = cms.string('PhoGenericRhoPtScaledCut'),
275  cutVariable = cms.string("neutralHadronIso"),
276  lessThan = cms.bool(True),
277  # cut
278  constTermEB = cms.double( wpEB.absPFNeuHadIsoWithEACut_C1 ),
279  constTermEE = cms.double( wpEE.absPFNeuHadIsoWithEACut_C1 ),
280  linearPtTermEB = cms.double( wpEB.absPFNeuHadIsoWithEACut_C2 ),
281  linearPtTermEE = cms.double( wpEE.absPFNeuHadIsoWithEACut_C2 ),
282  quadPtTermEB = cms.double( wpEB.absPFNeuHadIsoWithEACut_C3 ),
283  quadPtTermEE = cms.double( wpEE.absPFNeuHadIsoWithEACut_C3 ),
284  needsAdditionalProducts = cms.bool(True),
285  isIgnored = cms.bool(False),
286  rho = cms.InputTag("fixedGridRhoFastjetAll"),
287  effAreasConfigFile = cms.FileInPath( isoInputs.neuHadIsolationEffAreas )
288  )
289 
290 # Configure the cut on the photon isolation that uses
291 # the linear pt scaling for barrel and endcap
292 def psetPhoIsoWithEALinScalingCut(wpEB, wpEE, isoInputs):
293  """
294  Arguments: two containers of working point cut values of the type WorkingPoint_*
295  The third argument contains data for isolation calculation.
296  """
297  return cms.PSet(
298  cutName = cms.string('PhoGenericRhoPtScaledCut'),
299  cutVariable = cms.string("photonIso"),
300  lessThan = cms.bool(True),
301  # cut
302  constTermEB = cms.double( wpEB.absPFPhoIsoWithEACut_C1 ),
303  constTermEE = cms.double( wpEE.absPFPhoIsoWithEACut_C1 ),
304  linearPtTermEB = cms.double( wpEB.absPFPhoIsoWithEACut_C2 ),
305  linearPtTermEE = cms.double( wpEE.absPFPhoIsoWithEACut_C2 ),
306  quadPtTermEB = cms.double( 0. ),
307  quadPtTermEE = cms.double( 0. ),
308  needsAdditionalProducts = cms.bool(True),
309  isIgnored = cms.bool(False),
310  rho = cms.InputTag("fixedGridRhoFastjetAll"),
311  effAreasConfigFile = cms.FileInPath( isoInputs.phoIsolationEffAreas )
312  )
313 
314 
315 
316 # ==============================================================
317 # Define the complete cut sets
318 # ==============================================================
319 
320 
321 def configureVIDCutBasedPhoID_V1( wpEB, wpEE, isoInputs ):
322  """
323  This function configures the full cms.PSet for a VID ID and returns it.
324  The inputs: two objects of the type WorkingPoint_V1, one
325  containing the cuts for the Barrel (EB) and the other one for the Endcap (EE).
326  The third argument contains data for isolation calculation.
327  """
328  # print "VID: Configuring cut set %s" % wpEB.idName
329  parameterSet = cms.PSet(
330  #
331  idName = cms.string( wpEB.idName ), # same name stored in the _EB and _EE objects
332  cutFlow = cms.VPSet(
333  psetMinPtCut(), # pt cut
334  psetPhoSCEtaMultiRangeCut(), # eta cut
335  psetPhoHcalOverEcalBcCut(wpEB,wpEE), # H/E cut
336  psetPhoFull5x5SigmaIEtaIEtaValueMapCut(wpEB,wpEE), # full 5x5 sigmaIEtaIEta cut
337  psetChHadIsoWithEALinScalingCut(wpEB,wpEE,isoInputs), # charged hadron isolation cut
338  psetNeuHadIsoWithEALinScalingCut(wpEB,wpEE,isoInputs), # neutral hadron isolation cut
339  psetPhoIsoWithEALinScalingCut(wpEB,wpEE,isoInputs) # photon isolation cut
340  )
341  )
342  #
343  return parameterSet
344 
345 def configureVIDCutBasedPhoID_V2( wpEB, wpEE, isoInputs ):
346  """
347  This function configures the full cms.PSet for a VID ID and returns it.
348  The inputs: first object is of the type WorkingPoint_V2, second object
349  is of the type WorkingPoint_V1, containing the cuts for the Barrel (EB)
350  and the other one for the Endcap (EE).
351  The third argument contains data for isolation calculation.
352 
353  The V2 with respect to V1 has one change: the neutral hadron isolation
354  cut has an exponential pt scaling for the barrel.
355  """
356  # print "VID: Configuring cut set %s" % wpEB.idName
357  parameterSet = cms.PSet(
358  #
359  idName = cms.string( wpEB.idName ), # same name stored in the _EB and _EE objects
360  cutFlow = cms.VPSet(
361  psetMinPtCut(), # pt cut
362  psetPhoSCEtaMultiRangeCut(), # eta cut
363  psetPhoHcalOverEcalBcCut(wpEB,wpEE), # H/E cut
364  psetPhoFull5x5SigmaIEtaIEtaValueMapCut(wpEB,wpEE), # full 5x5 sigmaIEtaIEta cut
365  psetChHadIsoWithEALinScalingCut(wpEB,wpEE,isoInputs), # charged hadron isolation cut
366  psetNeuHadIsoWithEAExpoScalingEBCut(wpEB,wpEE,isoInputs), # neutral hadron isolation cut
367  psetPhoIsoWithEALinScalingCut(wpEB,wpEE,isoInputs) # photon isolation cut
368  )
369  )
370  #
371  return parameterSet
372 
373 def configureVIDCutBasedPhoID_V3( wpEB, wpEE, isoInputs ):
374  """
375  This function configures the full cms.PSet for a VID ID and returns it.
376  The inputs: first object is of the type WorkingPoint_V2, second object
377  is of the type WorkingPoint_V1, containing the cuts for the Barrel (EB)
378  and the other one for the Endcap (EE).
379  The third argument contains data for isolation calculation.
380 
381  The V3 with respect to V2 has one change: the full5x5 sigmaIEtaIEta
382  is taken from the native reco::Photon method and not from a ValueMap
383  produced upstream by some producer module.
384  """
385  # print "VID: Configuring cut set %s" % wpEB.idName
386  parameterSet = cms.PSet(
387  #
388  idName = cms.string( wpEB.idName ), # same name stored in the _EB and _EE objects
389  cutFlow = cms.VPSet(
390  psetMinPtCut(), # pt cut
391  psetPhoSCEtaMultiRangeCut(), # eta cut
392  psetPhoHcalOverEcalBcCut(wpEB,wpEE), # H/E cut
393  psetPhoFull5x5SigmaIEtaIEtaCut(wpEB,wpEE), # full 5x5 sigmaIEtaIEta cut
394  psetChHadIsoWithEALinScalingCut(wpEB,wpEE,isoInputs), # charged hadron isolation cut
395  psetNeuHadIsoWithEAExpoScalingEBCut(wpEB,wpEE,isoInputs), # neutral hadron isolation cut
396  psetPhoIsoWithEALinScalingCut(wpEB,wpEE,isoInputs) # photon isolation cut
397  )
398  )
399  #
400  return parameterSet
401 
402 def configureVIDCutBasedPhoID_V4( wpEB, wpEE, isoInputs ):
403  """
404  This function configures the full cms.PSet for a VID ID and returns it.
405  The inputs: first object is of the type WorkingPoint_V2, second object
406  is of the type WorkingPoint_V2 as well, first containing the cuts for the
407  Barrel (EB) and the other one for the Endcap (EE).
408  The third argument contains data for isolation calculation.
409 
410  The V4 with respect to V3 has one change: both barrel and endcap
411  use the exponential scaling for the neutral hadron isolation cut
412  (in V3 it was only done for the barrel)
413  """
414  # print "VID: Configuring cut set %s" % wpEB.idName
415  parameterSet = cms.PSet(
416  #
417  idName = cms.string( wpEB.idName ), # same name stored in the _EB and _EE objects
418  cutFlow = cms.VPSet(
419  psetMinPtCut(), # pt cut
420  psetPhoSCEtaMultiRangeCut(), # eta cut
421  psetPhoHcalOverEcalBcCut(wpEB,wpEE), # H/E cut
422  psetPhoFull5x5SigmaIEtaIEtaCut(wpEB,wpEE), # full 5x5 sigmaIEtaIEta cut
423  psetChHadIsoWithEALinScalingCut(wpEB,wpEE,isoInputs), # charged hadron isolation cut
424  psetNeuHadIsoWithEAExpoScalingCut(wpEB,wpEE,isoInputs), # neutral hadron isolation cut
425  psetPhoIsoWithEALinScalingCut(wpEB,wpEE,isoInputs) # photon isolation cut
426  )
427  )
428  #
429  return parameterSet
430 
431 def configureVIDCutBasedPhoID_V5( wpEB, wpEE, isoInputs ):
432  """
433  This function configures the full cms.PSet for a VID ID and returns it.
434  The inputs: first object is of the type WorkingPoint_V2, second object
435  is of the type WorkingPoint_V2 as well, first containing the cuts for the
436  Barrel (EB) and the other one for the Endcap (EE).
437  The third argument contains data for isolation calculation.
438 
439  The V5 with respect to V4 has one change: the neutral hadron isolation
440  for both barrel and endcap now uses quadratic polynomial scaling.
441  """
442  # print "VID: Configuring cut set %s" % wpEB.idName
443  parameterSet = cms.PSet(
444  #
445  idName = cms.string( wpEB.idName ), # same name stored in the _EB and _EE objects
446  cutFlow = cms.VPSet(
447  psetMinPtCut(), # pt cut
448  psetPhoSCEtaMultiRangeCut(), # eta cut
449  psetPhoHcalOverEcalBcCut(wpEB,wpEE), # H/E cut
450  psetPhoFull5x5SigmaIEtaIEtaCut(wpEB,wpEE), # full 5x5 sigmaIEtaIEta cut
451  psetChHadIsoWithEALinScalingCut(wpEB,wpEE,isoInputs), # charged hadron isolation cut
452  psetNeuHadIsoWithEAQuadScalingCut(wpEB,wpEE,isoInputs), # neutral hadron isolation cut
453  psetPhoIsoWithEALinScalingCut(wpEB,wpEE,isoInputs) # photon isolation cut
454  )
455  )
456  #
457  return parameterSet
458 
def configureVIDCutBasedPhoID_V1(wpEB, wpEE, isoInputs)
def psetNeuHadIsoWithEAExpoScalingCut(wpEB, wpEE, isoInputs)
def psetNeuHadIsoWithEAQuadScalingCut(wpEB, wpEE, isoInputs)
def psetPhoHcalOverEcalBcCut(wpEB, wpEE)
def configureVIDCutBasedPhoID_V5(wpEB, wpEE, isoInputs)
def configureVIDCutBasedPhoID_V3(wpEB, wpEE, isoInputs)
def psetPhoFull5x5SigmaIEtaIEtaValueMapCut(wpEB, wpEE)
def psetPhoIsoWithEALinScalingCut(wpEB, wpEE, isoInputs)
def psetNeuHadIsoWithEAExpoScalingEBCut(wpEB, wpEE, isoInputs)
def __init__(self, idName, hOverECut, full5x5_sigmaIEtaIEtaCut, absPFChaHadIsoWithEACut_C1, absPFChaHadIsoWithEACut_C2, absPFNeuHadIsoWithEACut_C1, absPFNeuHadIsoWithEACut_C2, absPFPhoIsoWithEACut_C1, absPFPhoIsoWithEACut_C2)
def psetChHadIsoWithEALinScalingCut(wpEB, wpEE, isoInputs)
def configureVIDCutBasedPhoID_V4(wpEB, wpEE, isoInputs)
def __init__(self, chHadIsolationMapName, chHadIsolationEffAreas, neuHadIsolationMapName, neuHadIsolationEffAreas, phoIsolationMapName, phoIsolationEffAreas)
def __init__(self, idName, hOverECut, full5x5_sigmaIEtaIEtaCut, absPFChaHadIsoWithEACut_C1, absPFChaHadIsoWithEACut_C2, absPFNeuHadIsoWithEACut_C1, absPFNeuHadIsoWithEACut_C2, absPFNeuHadIsoWithEACut_C3, absPFPhoIsoWithEACut_C1, absPFPhoIsoWithEACut_C2)
def configureVIDCutBasedPhoID_V2(wpEB, wpEE, isoInputs)
def psetNeuHadIsoWithEALinScalingCut(wpEB, wpEE, isoInputs)
def psetPhoFull5x5SigmaIEtaIEtaCut(wpEB, wpEE)