CMS 3D CMS Logo

runTauIdMVA.py
Go to the documentation of this file.
1 from RecoTauTag.RecoTau.TauDiscriminatorTools import noPrediscriminants
2 from RecoTauTag.RecoTau.PATTauDiscriminationByMVAIsolationRun2_cff import patDiscriminationByIsolationMVArun2v1raw, patDiscriminationByIsolationMVArun2v1VLoose
3 import os
4 import re
5 
7  """class to rerun the tau seq and acces trainings from the database"""
8  availableDiscriminators = [
9  "2017v1", "2017v2", "newDM2017v2", "dR0p32017v2", "2016v1", "newDM2016v1",
10  "deepTau2017v1", "deepTau2017v2", "DPFTau_2016_v0", "DPFTau_2016_v1", "againstEle2018"
11  ]
12 
13  def __init__(self, process, cms, debug = False,
14  updatedTauName = "slimmedTausNewID",
15  toKeep = ["deepTau2017v2"],
16  tauIdDiscrMVA_trainings_run2_2017 = { 'tauIdMVAIsoDBoldDMwLT2017' : "tauIdMVAIsoDBoldDMwLT2017", },
17  tauIdDiscrMVA_WPs_run2_2017 = {
18  'tauIdMVAIsoDBoldDMwLT2017' : {
19  'Eff95' : "DBoldDMwLTEff95",
20  'Eff90' : "DBoldDMwLTEff90",
21  'Eff80' : "DBoldDMwLTEff80",
22  'Eff70' : "DBoldDMwLTEff70",
23  'Eff60' : "DBoldDMwLTEff60",
24  'Eff50' : "DBoldDMwLTEff50",
25  'Eff40' : "DBoldDMwLTEff40"
26  }
27  },
28  tauIdDiscrMVA_2017_version = "v1",
29  conditionDB = "" # preparational DB: 'frontier://FrontierPrep/CMS_CONDITIONS'
30  ):
31  super(TauIDEmbedder, self).__init__()
32  self.process = process
33  self.cms = cms
34  self.debug = debug
35  self.updatedTauName = updatedTauName
36  self.process.load('RecoTauTag.Configuration.loadRecoTauTagMVAsFromPrepDB_cfi')
37  if len(conditionDB) != 0:
38  self.process.CondDBTauConnection.connect = cms.string(conditionDB)
39  self.process.loadRecoTauTagMVAsFromPrepDB.connect = cms.string(conditionDB)
40  # if debug:
41  # print self.process.CondDBTauConnection.connect
42  # print dir(self.process.loadRecoTauTagMVAsFromPrepDB)
43  # print self.process.loadRecoTauTagMVAsFromPrepDB.parameterNames_
44 
45  self.tauIdDiscrMVA_trainings_run2_2017 = tauIdDiscrMVA_trainings_run2_2017
46  self.tauIdDiscrMVA_WPs_run2_2017 = tauIdDiscrMVA_WPs_run2_2017
47  self.tauIdDiscrMVA_2017_version = tauIdDiscrMVA_2017_version
48  for discr in toKeep:
49  if discr not in TauIDEmbedder.availableDiscriminators:
50  raise RuntimeError('TauIDEmbedder: discriminator "{}" is not supported'.format(discr))
51  self.toKeep = toKeep
52 
53 
54  @staticmethod
55  def get_cmssw_version(debug = False):
56  """returns 'CMSSW_X_Y_Z'"""
57  cmssw_version = os.environ["CMSSW_VERSION"]
58  if debug: print "get_cmssw_version:", cmssw_version
59  return cmssw_version
60 
61  @classmethod
62  def get_cmssw_version_number(klass, debug = False):
63  """returns '(release, subversion, patch)' (without 'CMSSW_')"""
64  v = klass.get_cmssw_version().split("CMSSW_")[1].split("_")[0:3]
65  if debug: print "get_cmssw_version_number:", v
66  if v[2] == "X":
67  patch = -1
68  else:
69  patch = int(v[2])
70  return int(v[0]), int(v[1]), patch
71 
72  @staticmethod
73  def versionToInt(release=9, subversion=4, patch=0, debug = False):
74  version = release * 10000 + subversion * 100 + patch + 1 # shifted by one to account for pre-releases.
75  if debug: print "versionToInt:", version
76  return version
77 
78 
79  @classmethod
80  def is_above_cmssw_version(klass, release=9, subversion=4, patch=0, debug = False):
81  split_cmssw_version = klass.get_cmssw_version_number()
82  if klass.versionToInt(release, subversion, patch) > klass.versionToInt(split_cmssw_version[0], split_cmssw_version[1], split_cmssw_version[2]):
83  if debug: print "is_above_cmssw_version:", False
84  return False
85  else:
86  if debug: print "is_above_cmssw_version:", True
87  return True
88 
90  if self.debug: print "loadMVA_WPs_run2_2017: performed"
91  global cms
92  for training, gbrForestName in self.tauIdDiscrMVA_trainings_run2_2017.items():
93 
94  self.process.loadRecoTauTagMVAsFromPrepDB.toGet.append(
95  self.cms.PSet(
96  record = self.cms.string('GBRWrapperRcd'),
97  tag = self.cms.string("RecoTauTag_%s%s" % (gbrForestName, self.tauIdDiscrMVA_2017_version)),
98  label = self.cms.untracked.string("RecoTauTag_%s%s" % (gbrForestName, self.tauIdDiscrMVA_2017_version))
99  )
100  )
101 
102  for WP in self.tauIdDiscrMVA_WPs_run2_2017[training].keys():
103  self.process.loadRecoTauTagMVAsFromPrepDB.toGet.append(
104  self.cms.PSet(
105  record = self.cms.string('PhysicsTGraphPayloadRcd'),
106  tag = self.cms.string("RecoTauTag_%s%s_WP%s" % (gbrForestName, self.tauIdDiscrMVA_2017_version, WP)),
107  label = self.cms.untracked.string("RecoTauTag_%s%s_WP%s" % (gbrForestName, self.tauIdDiscrMVA_2017_version, WP))
108  )
109  )
110 
111  self.process.loadRecoTauTagMVAsFromPrepDB.toGet.append(
112  self.cms.PSet(
113  record = self.cms.string('PhysicsTFormulaPayloadRcd'),
114  tag = self.cms.string("RecoTauTag_%s%s_mvaOutput_normalization" % (gbrForestName, self.tauIdDiscrMVA_2017_version)),
115  label = self.cms.untracked.string("RecoTauTag_%s%s_mvaOutput_normalization" % (gbrForestName, self.tauIdDiscrMVA_2017_version))
116  )
117  )
118 
119  def runTauID(self):
120  self.process.rerunMvaIsolationTask = self.cms.Task()
121  self.process.rerunMvaIsolationSequence = self.cms.Sequence()
122  tauIDSources = self.cms.PSet()
123 
124  # rerun the seq to obtain the 2017 nom training with 0.5 iso cone, old DM, ptph>1, trained on 2017MCv1
125  if "2017v1" in self.toKeep:
126  self.tauIdDiscrMVA_2017_version = "v1"
128  'tauIdMVAIsoDBoldDMwLT2017' : "tauIdMVAIsoDBoldDMwLT2017",
129  }
131  'tauIdMVAIsoDBoldDMwLT2017' : {
132  'Eff95' : "DBoldDMwLTEff95",
133  'Eff90' : "DBoldDMwLTEff90",
134  'Eff80' : "DBoldDMwLTEff80",
135  'Eff70' : "DBoldDMwLTEff70",
136  'Eff60' : "DBoldDMwLTEff60",
137  'Eff50' : "DBoldDMwLTEff50",
138  'Eff40' : "DBoldDMwLTEff40"
139  }
140  }
141  # update the list of available in DB samples
142  if not self.is_above_cmssw_version(9, 4, 4, self.debug):
143  if self.debug: print "runTauID: not is_above_cmssw_version(9, 4, 4). Will update the list of available in DB samples to access 2017v1"
144  self.loadMVA_WPs_run2_2017()
145 
146  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1raw = patDiscriminationByIsolationMVArun2v1raw.clone(
147  PATTauProducer = self.cms.InputTag('slimmedTaus'),
148  Prediscriminants = noPrediscriminants,
149  loadMVAfromDB = self.cms.bool(True),
150  mvaName = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2017v1"),#RecoTauTag_tauIdMVAIsoDBoldDMwLT2016v1 writeTauIdDiscrMVAs
151  mvaOpt = self.cms.string("DBoldDMwLTwGJ"),
152  requireDecayMode = self.cms.bool(True),
153  verbosity = self.cms.int32(0)
154  )
155 
156  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1VLoose = patDiscriminationByIsolationMVArun2v1VLoose.clone(
157  PATTauProducer = self.cms.InputTag('slimmedTaus'),
158  Prediscriminants = noPrediscriminants,
159  toMultiplex = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2017v1raw'),
160  key = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2017v1raw:category'),#?
161  loadMVAfromDB = self.cms.bool(True),
162  mvaOutput_normalization = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2017v1_mvaOutput_normalization"), #writeTauIdDiscrMVAoutputNormalizations
163  mapping = self.cms.VPSet(
164  self.cms.PSet(
165  category = self.cms.uint32(0),
166  cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2017v1_WPEff90"), #writeTauIdDiscrWPs
167  variable = self.cms.string("pt"),
168  )
169  )
170  )
171 
172  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1VVLoose = self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1VLoose.clone()
173  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1VVLoose.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2017v1_WPEff95")
174  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1Loose = self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1VLoose.clone()
175  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1Loose.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2017v1_WPEff80")
176  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1Medium = self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1VLoose.clone()
177  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1Medium.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2017v1_WPEff70")
178  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1Tight = self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1VLoose.clone()
179  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1Tight.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2017v1_WPEff60")
180  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1VTight = self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1VLoose.clone()
181  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1VTight.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2017v1_WPEff50")
182  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1VVTight = self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1VLoose.clone()
183  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1VVTight.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2017v1_WPEff40")
184 
186  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1raw,
187  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1VLoose,
188  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1VVLoose,
189  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1Loose,
190  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1Medium,
191  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1Tight,
192  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1VTight,
193  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v1VVTight
194  )
195  self.process.rerunMvaIsolationTask.add(self.rerunIsolationOldDMMVArun2017v1Task)
196  self.process.rerunMvaIsolationSequence += self.cms.Sequence(self.rerunIsolationOldDMMVArun2017v1Task)
197 
198  tauIDSources.byIsolationMVArun2017v1DBoldDMwLTraw2017 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2017v1raw')
199  tauIDSources.byVVLooseIsolationMVArun2017v1DBoldDMwLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2017v1VVLoose')
200  tauIDSources.byVLooseIsolationMVArun2017v1DBoldDMwLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2017v1VLoose')
201  tauIDSources.byLooseIsolationMVArun2017v1DBoldDMwLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2017v1Loose')
202  tauIDSources.byMediumIsolationMVArun2017v1DBoldDMwLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2017v1Medium')
203  tauIDSources.byTightIsolationMVArun2017v1DBoldDMwLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2017v1Tight')
204  tauIDSources.byVTightIsolationMVArun2017v1DBoldDMwLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2017v1VTight')
205  tauIDSources.byVVTightIsolationMVArun2017v1DBoldDMwLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2017v1VVTight')
206 
207 
208  if "2017v2" in self.toKeep:
209  self.tauIdDiscrMVA_2017_version = "v2"
211  'tauIdMVAIsoDBoldDMwLT2017' : "tauIdMVAIsoDBoldDMwLT2017",
212  }
214  'tauIdMVAIsoDBoldDMwLT2017' : {
215  'Eff95' : "DBoldDMwLTEff95",
216  'Eff90' : "DBoldDMwLTEff90",
217  'Eff80' : "DBoldDMwLTEff80",
218  'Eff70' : "DBoldDMwLTEff70",
219  'Eff60' : "DBoldDMwLTEff60",
220  'Eff50' : "DBoldDMwLTEff50",
221  'Eff40' : "DBoldDMwLTEff40"
222  }
223  }
224 
225  if not self.is_above_cmssw_version(9, 4, 5, self.debug):
226  if self.debug: print "runTauID: not is_above_cmssw_version(9, 4, 5). Will update the list of available in DB samples to access 2017v2"
227  self.loadMVA_WPs_run2_2017()
228 
229  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2raw = patDiscriminationByIsolationMVArun2v1raw.clone(
230  PATTauProducer = self.cms.InputTag('slimmedTaus'),
231  Prediscriminants = noPrediscriminants,
232  loadMVAfromDB = self.cms.bool(True),
233  mvaName = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2017v2"),#RecoTauTag_tauIdMVAIsoDBoldDMwLT2016v1 writeTauIdDiscrMVAs
234  mvaOpt = self.cms.string("DBoldDMwLTwGJ"),
235  requireDecayMode = self.cms.bool(True),
236  verbosity = self.cms.int32(0)
237  )
238 
239  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2VLoose = patDiscriminationByIsolationMVArun2v1VLoose.clone(
240  PATTauProducer = self.cms.InputTag('slimmedTaus'),
241  Prediscriminants = noPrediscriminants,
242  toMultiplex = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2017v2raw'),
243  key = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2017v2raw:category'),#?
244  loadMVAfromDB = self.cms.bool(True),
245  mvaOutput_normalization = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2017v2_mvaOutput_normalization"), #writeTauIdDiscrMVAoutputNormalizations
246  mapping = self.cms.VPSet(
247  self.cms.PSet(
248  category = self.cms.uint32(0),
249  cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2017v2_WPEff90"), #writeTauIdDiscrWPs
250  variable = self.cms.string("pt"),
251  )
252  ),
253  verbosity = self.cms.int32(0)
254  )
255 
256  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2VVLoose = self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2VLoose.clone()
257  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2VVLoose.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2017v2_WPEff95")
258  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2Loose = self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2VLoose.clone()
259  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2Loose.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2017v2_WPEff80")
260  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2Medium = self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2VLoose.clone()
261  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2Medium.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2017v2_WPEff70")
262  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2Tight = self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2VLoose.clone()
263  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2Tight.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2017v2_WPEff60")
264  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2VTight = self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2VLoose.clone()
265  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2VTight.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2017v2_WPEff50")
266  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2VVTight = self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2VLoose.clone()
267  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2VVTight.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2017v2_WPEff40")
268 
270  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2raw,
271  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2VLoose,
272  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2VVLoose,
273  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2Loose,
274  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2Medium,
275  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2Tight,
276  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2VTight,
277  self.process.rerunDiscriminationByIsolationOldDMMVArun2017v2VVTight
278  )
279  self.process.rerunMvaIsolationTask.add(self.rerunIsolationOldDMMVArun2017v2Task)
280  self.process.rerunMvaIsolationSequence += self.cms.Sequence(self.rerunIsolationOldDMMVArun2017v2Task)
281 
282  tauIDSources.byIsolationMVArun2017v2DBoldDMwLTraw2017 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2017v2raw')
283  tauIDSources.byVVLooseIsolationMVArun2017v2DBoldDMwLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2017v2VVLoose')
284  tauIDSources.byVLooseIsolationMVArun2017v2DBoldDMwLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2017v2VLoose')
285  tauIDSources.byLooseIsolationMVArun2017v2DBoldDMwLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2017v2Loose')
286  tauIDSources.byMediumIsolationMVArun2017v2DBoldDMwLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2017v2Medium')
287  tauIDSources.byTightIsolationMVArun2017v2DBoldDMwLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2017v2Tight')
288  tauIDSources.byVTightIsolationMVArun2017v2DBoldDMwLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2017v2VTight')
289  tauIDSources.byVVTightIsolationMVArun2017v2DBoldDMwLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2017v2VVTight')
290 
291  if "newDM2017v2" in self.toKeep:
292  self.tauIdDiscrMVA_2017_version = "v2"
294  'tauIdMVAIsoDBnewDMwLT2017' : "tauIdMVAIsoDBnewDMwLT2017",
295  }
297  'tauIdMVAIsoDBnewDMwLT2017' : {
298  'Eff95' : "DBnewDMwLTEff95",
299  'Eff90' : "DBnewDMwLTEff90",
300  'Eff80' : "DBnewDMwLTEff80",
301  'Eff70' : "DBnewDMwLTEff70",
302  'Eff60' : "DBnewDMwLTEff60",
303  'Eff50' : "DBnewDMwLTEff50",
304  'Eff40' : "DBnewDMwLTEff40"
305  }
306  }
307 
308  if not self.is_above_cmssw_version(9, 4, 5, self.debug):
309  if self.debug: print "runTauID: not is_above_cmssw_version(9, 4, 5). Will update the list of available in DB samples to access newDM2017v2"
310  self.loadMVA_WPs_run2_2017()
311 
312  self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2raw = patDiscriminationByIsolationMVArun2v1raw.clone(
313  PATTauProducer = self.cms.InputTag('slimmedTaus'),
314  Prediscriminants = noPrediscriminants,
315  loadMVAfromDB = self.cms.bool(True),
316  mvaName = self.cms.string("RecoTauTag_tauIdMVAIsoDBnewDMwLT2017v2"),#RecoTauTag_tauIdMVAIsoDBoldDMwLT2016v1 writeTauIdDiscrMVAs
317  mvaOpt = self.cms.string("DBnewDMwLTwGJ"),
318  requireDecayMode = self.cms.bool(True),
319  verbosity = self.cms.int32(0)
320  )
321 
322  self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2VLoose = patDiscriminationByIsolationMVArun2v1VLoose.clone(
323  PATTauProducer = self.cms.InputTag('slimmedTaus'),
324  Prediscriminants = noPrediscriminants,
325  toMultiplex = self.cms.InputTag('rerunDiscriminationByIsolationNewDMMVArun2017v2raw'),
326  key = self.cms.InputTag('rerunDiscriminationByIsolationNewDMMVArun2017v2raw:category'),#?
327  loadMVAfromDB = self.cms.bool(True),
328  mvaOutput_normalization = self.cms.string("RecoTauTag_tauIdMVAIsoDBnewDMwLT2017v2_mvaOutput_normalization"), #writeTauIdDiscrMVAoutputNormalizations
329  mapping = self.cms.VPSet(
330  self.cms.PSet(
331  category = self.cms.uint32(0),
332  cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBnewDMwLT2017v2_WPEff90"), #writeTauIdDiscrWPs
333  variable = self.cms.string("pt"),
334  )
335  ),
336  verbosity = self.cms.int32(0)
337  )
338 
339  self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2VVLoose = self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2VLoose.clone()
340  self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2VVLoose.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBnewDMwLT2017v2_WPEff95")
341  self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2Loose = self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2VLoose.clone()
342  self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2Loose.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBnewDMwLT2017v2_WPEff80")
343  self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2Medium = self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2VLoose.clone()
344  self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2Medium.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBnewDMwLT2017v2_WPEff70")
345  self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2Tight = self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2VLoose.clone()
346  self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2Tight.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBnewDMwLT2017v2_WPEff60")
347  self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2VTight = self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2VLoose.clone()
348  self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2VTight.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBnewDMwLT2017v2_WPEff50")
349  self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2VVTight = self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2VLoose.clone()
350  self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2VVTight.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBnewDMwLT2017v2_WPEff40")
351 
353  self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2raw,
354  self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2VLoose,
355  self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2VVLoose,
356  self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2Loose,
357  self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2Medium,
358  self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2Tight,
359  self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2VTight,
360  self.process.rerunDiscriminationByIsolationNewDMMVArun2017v2VVTight
361  )
362  self.process.rerunMvaIsolationTask.add(self.rerunIsolationNewDMMVArun2017v2Task)
363  self.process.rerunMvaIsolationSequence += self.cms.Sequence(self.rerunIsolationNewDMMVArun2017v2Task)
364 
365  tauIDSources.byIsolationMVArun2017v2DBnewDMwLTraw2017 = self.cms.InputTag('rerunDiscriminationByIsolationNewDMMVArun2017v2raw')
366  tauIDSources.byVVLooseIsolationMVArun2017v2DBnewDMwLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationNewDMMVArun2017v2VVLoose')
367  tauIDSources.byVLooseIsolationMVArun2017v2DBnewDMwLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationNewDMMVArun2017v2VLoose')
368  tauIDSources.byLooseIsolationMVArun2017v2DBnewDMwLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationNewDMMVArun2017v2Loose')
369  tauIDSources.byMediumIsolationMVArun2017v2DBnewDMwLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationNewDMMVArun2017v2Medium')
370  tauIDSources.byTightIsolationMVArun2017v2DBnewDMwLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationNewDMMVArun2017v2Tight')
371  tauIDSources.byVTightIsolationMVArun2017v2DBnewDMwLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationNewDMMVArun2017v2VTight')
372  tauIDSources.byVVTightIsolationMVArun2017v2DBnewDMwLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationNewDMMVArun2017v2VVTight')
373 
374  if "dR0p32017v2" in self.toKeep:
375  self.tauIdDiscrMVA_2017_version = "v2"
377  'tauIdMVAIsoDBoldDMdR0p3wLT2017' : "tauIdMVAIsoDBoldDMdR0p3wLT2017",
378  }
380  'tauIdMVAIsoDBoldDMdR0p3wLT2017' : {
381  'Eff95' : "DBoldDMdR0p3wLTEff95",
382  'Eff90' : "DBoldDMdR0p3wLTEff90",
383  'Eff80' : "DBoldDMdR0p3wLTEff80",
384  'Eff70' : "DBoldDMdR0p3wLTEff70",
385  'Eff60' : "DBoldDMdR0p3wLTEff60",
386  'Eff50' : "DBoldDMdR0p3wLTEff50",
387  'Eff40' : "DBoldDMdR0p3wLTEff40"
388  }
389  }
390 
391  if not self.is_above_cmssw_version(9, 4, 5, self.debug):
392  if self.debug: print "runTauID: not is_above_cmssw_version(9, 4, 5). Will update the list of available in DB samples to access dR0p32017v2"
393  self.loadMVA_WPs_run2_2017()
394 
395  self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2raw = patDiscriminationByIsolationMVArun2v1raw.clone(
396  PATTauProducer = self.cms.InputTag('slimmedTaus'),
397  Prediscriminants = noPrediscriminants,
398  loadMVAfromDB = self.cms.bool(True),
399  mvaName = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMdR0p3wLT2017v2"),
400  mvaOpt = self.cms.string("DBoldDMwLTwGJ"),
401  requireDecayMode = self.cms.bool(True),
402  srcChargedIsoPtSum = self.cms.string('chargedIsoPtSumdR03'),
403  srcFootprintCorrection = self.cms.string('footprintCorrectiondR03'),
404  srcNeutralIsoPtSum = self.cms.string('neutralIsoPtSumdR03'),
405  srcPhotonPtSumOutsideSignalCone = self.cms.string('photonPtSumOutsideSignalConedR03'),
406  verbosity = self.cms.int32(0)
407  )
408 
409  self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2VLoose = patDiscriminationByIsolationMVArun2v1VLoose.clone(
410  PATTauProducer = self.cms.InputTag('slimmedTaus'),
411  Prediscriminants = noPrediscriminants,
412  toMultiplex = self.cms.InputTag('rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2raw'),
413  key = self.cms.InputTag('rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2raw:category'),#?
414  loadMVAfromDB = self.cms.bool(True),
415  mvaOutput_normalization = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMdR0p3wLT2017v2_mvaOutput_normalization"), #writeTauIdDiscrMVAoutputNormalizations
416  mapping = self.cms.VPSet(
417  self.cms.PSet(
418  category = self.cms.uint32(0),
419  cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMdR0p3wLT2017v2_WPEff90"), #writeTauIdDiscrWPs
420  variable = self.cms.string("pt"),
421  )
422  ),
423  verbosity = self.cms.int32(0)
424  )
425 
426  self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2VVLoose = self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2VLoose.clone()
427  self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2VVLoose.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMdR0p3wLT2017v2_WPEff95")
428  self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2Loose = self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2VLoose.clone()
429  self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2Loose.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMdR0p3wLT2017v2_WPEff80")
430  self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2Medium = self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2VLoose.clone()
431  self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2Medium.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMdR0p3wLT2017v2_WPEff70")
432  self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2Tight = self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2VLoose.clone()
433  self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2Tight.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMdR0p3wLT2017v2_WPEff60")
434  self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2VTight = self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2VLoose.clone()
435  self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2VTight.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMdR0p3wLT2017v2_WPEff50")
436  self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2VVTight = self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2VLoose.clone()
437  self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2VVTight.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMdR0p3wLT2017v2_WPEff40")
438 
440  self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2raw,
441  self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2VLoose,
442  self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2VVLoose,
443  self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2Loose,
444  self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2Medium,
445  self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2Tight,
446  self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2VTight,
447  self.process.rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2VVTight
448  )
449  self.process.rerunMvaIsolationTask.add(self.rerunIsolationOldDMdR0p3MVArun2017v2Task)
450  self.process.rerunMvaIsolationSequence += self.cms.Sequence(self.rerunIsolationOldDMdR0p3MVArun2017v2Task)
451 
452  tauIDSources.byIsolationMVArun2017v2DBoldDMdR0p3wLTraw2017 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2raw')
453  tauIDSources.byVVLooseIsolationMVArun2017v2DBoldDMdR0p3wLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2VVLoose')
454  tauIDSources.byVLooseIsolationMVArun2017v2DBoldDMdR0p3wLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2VLoose')
455  tauIDSources.byLooseIsolationMVArun2017v2DBoldDMdR0p3wLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2Loose')
456  tauIDSources.byMediumIsolationMVArun2017v2DBoldDMdR0p3wLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2Medium')
457  tauIDSources.byTightIsolationMVArun2017v2DBoldDMdR0p3wLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2Tight')
458  tauIDSources.byVTightIsolationMVArun2017v2DBoldDMdR0p3wLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2VTight')
459  tauIDSources.byVVTightIsolationMVArun2017v2DBoldDMdR0p3wLT2017 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMdR0p3MVArun2017v2VVTight')
460 
461  # 2016 training strategy(v2) - essentially the same as 2017 training strategy (v1), trained on 2016MC, old DM - currently not implemented in the tau sequence of any release
462  # self.process.rerunDiscriminationByIsolationOldDMMVArun2v2raw = patDiscriminationByIsolationMVArun2v1raw.clone(
463  # PATTauProducer = self.cms.InputTag('slimmedTaus'),
464  # Prediscriminants = noPrediscriminants,
465  # loadMVAfromDB = self.cms.bool(True),
466  # mvaName = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2016v2"),#RecoTauTag_tauIdMVAIsoDBoldDMwLT2016v1 writeTauIdDiscrMVAs
467  # mvaOpt = self.cms.string("DBoldDMwLTwGJ"),
468  # requireDecayMode = self.cms.bool(True),
469  # verbosity = self.cms.int32(0)
470  # )
471  # #
472  # self.process.rerunDiscriminationByIsolationOldDMMVArun2v2VLoose = patDiscriminationByIsolationMVArun2v1VLoose.clone(
473  # PATTauProducer = self.cms.InputTag('slimmedTaus'),
474  # Prediscriminants = noPrediscriminants,
475  # toMultiplex = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2v2raw'),
476  # key = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2v2raw:category'),#?
477  # loadMVAfromDB = self.cms.bool(True),
478  # mvaOutput_normalization = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2016v2_mvaOutput_normalization"), #writeTauIdDiscrMVAoutputNormalizations
479  # mapping = self.cms.VPSet(
480  # self.cms.PSet(
481  # category = self.cms.uint32(0),
482  # cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2016v2_WPEff90"), #writeTauIdDiscrWPs
483  # variable = self.cms.string("pt"),
484  # )
485  # )
486  # )
487 
488  # 2016 training strategy(v1), trained on 2016MC, old DM
489  if "2016v1" in self.toKeep:
490  self.process.rerunDiscriminationByIsolationOldDMMVArun2v1raw = patDiscriminationByIsolationMVArun2v1raw.clone(
491  PATTauProducer = self.cms.InputTag('slimmedTaus'),
492  Prediscriminants = noPrediscriminants,
493  loadMVAfromDB = self.cms.bool(True),
494  mvaName = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2016v1"),
495  mvaOpt = self.cms.string("DBoldDMwLT"),
496  requireDecayMode = self.cms.bool(True),
497  verbosity = self.cms.int32(0)
498  )
499 
500  self.process.rerunDiscriminationByIsolationOldDMMVArun2v1VLoose = patDiscriminationByIsolationMVArun2v1VLoose.clone(
501  PATTauProducer = self.cms.InputTag('slimmedTaus'),
502  Prediscriminants = noPrediscriminants,
503  toMultiplex = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2v1raw'),
504  key = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2v1raw:category'),
505  loadMVAfromDB = self.cms.bool(True),
506  mvaOutput_normalization = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2016v1_mvaOutput_normalization"),
507  mapping = self.cms.VPSet(
508  self.cms.PSet(
509  category = self.cms.uint32(0),
510  cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2016v1_WPEff90"),
511  variable = self.cms.string("pt"),
512  )
513  )
514  )
515 
516  self.process.rerunDiscriminationByIsolationOldDMMVArun2v1Loose = self.process.rerunDiscriminationByIsolationOldDMMVArun2v1VLoose.clone()
517  self.process.rerunDiscriminationByIsolationOldDMMVArun2v1Loose.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2016v1_WPEff80")
518  self.process.rerunDiscriminationByIsolationOldDMMVArun2v1Medium = self.process.rerunDiscriminationByIsolationOldDMMVArun2v1VLoose.clone()
519  self.process.rerunDiscriminationByIsolationOldDMMVArun2v1Medium.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2016v1_WPEff70")
520  self.process.rerunDiscriminationByIsolationOldDMMVArun2v1Tight = self.process.rerunDiscriminationByIsolationOldDMMVArun2v1VLoose.clone()
521  self.process.rerunDiscriminationByIsolationOldDMMVArun2v1Tight.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2016v1_WPEff60")
522  self.process.rerunDiscriminationByIsolationOldDMMVArun2v1VTight = self.process.rerunDiscriminationByIsolationOldDMMVArun2v1VLoose.clone()
523  self.process.rerunDiscriminationByIsolationOldDMMVArun2v1VTight.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2016v1_WPEff50")
524  self.process.rerunDiscriminationByIsolationOldDMMVArun2v1VVTight = self.process.rerunDiscriminationByIsolationOldDMMVArun2v1VLoose.clone()
525  self.process.rerunDiscriminationByIsolationOldDMMVArun2v1VVTight.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2016v1_WPEff40")
526 
528  self.process.rerunDiscriminationByIsolationOldDMMVArun2v1raw,
529  self.process.rerunDiscriminationByIsolationOldDMMVArun2v1VLoose,
530  self.process.rerunDiscriminationByIsolationOldDMMVArun2v1Loose,
531  self.process.rerunDiscriminationByIsolationOldDMMVArun2v1Medium,
532  self.process.rerunDiscriminationByIsolationOldDMMVArun2v1Tight,
533  self.process.rerunDiscriminationByIsolationOldDMMVArun2v1VTight,
534  self.process.rerunDiscriminationByIsolationOldDMMVArun2v1VVTight
535  )
536  self.process.rerunMvaIsolationTask.add(self.rerunIsolationOldDMMVArun2016v1Task)
537  self.process.rerunMvaIsolationSequence += self.cms.Sequence(self.rerunIsolationOldDMMVArun2016v1Task)
538 
539  tauIDSources.byIsolationMVArun2v1DBoldDMwLTraw2016 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2v1raw')
540  tauIDSources.byVLooseIsolationMVArun2v1DBoldDMwLT2016 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2v1VLoose')
541  tauIDSources.byLooseIsolationMVArun2v1DBoldDMwLT2016 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2v1Loose')
542  tauIDSources.byMediumIsolationMVArun2v1DBoldDMwLT2016 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2v1Medium')
543  tauIDSources.byTightIsolationMVArun2v1DBoldDMwLT2016 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2v1Tight')
544  tauIDSources.byVTightIsolationMVArun2v1DBoldDMwLT2016 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2v1VTight')
545  tauIDSources.byVVTightIsolationMVArun2v1DBoldDMwLT2016 = self.cms.InputTag('rerunDiscriminationByIsolationOldDMMVArun2v1VVTight')
546 
547  # 2016 training strategy(v1), trained on 2016MC, new DM
548  if "newDM2016v1" in self.toKeep:
549  self.process.rerunDiscriminationByIsolationNewDMMVArun2v1raw = patDiscriminationByIsolationMVArun2v1raw.clone(
550  PATTauProducer = self.cms.InputTag('slimmedTaus'),
551  Prediscriminants = noPrediscriminants,
552  loadMVAfromDB = self.cms.bool(True),
553  mvaName = self.cms.string("RecoTauTag_tauIdMVAIsoDBnewDMwLT2016v1"),
554  mvaOpt = self.cms.string("DBnewDMwLT"),
555  requireDecayMode = self.cms.bool(True),
556  verbosity = self.cms.int32(0)
557  )
558 
559  self.process.rerunDiscriminationByIsolationNewDMMVArun2v1VLoose = patDiscriminationByIsolationMVArun2v1VLoose.clone(
560  PATTauProducer = self.cms.InputTag('slimmedTaus'),
561  Prediscriminants = noPrediscriminants,
562  toMultiplex = self.cms.InputTag('rerunDiscriminationByIsolationNewDMMVArun2v1raw'),
563  key = self.cms.InputTag('rerunDiscriminationByIsolationNewDMMVArun2v1raw:category'),
564  loadMVAfromDB = self.cms.bool(True),
565  mvaOutput_normalization = self.cms.string("RecoTauTag_tauIdMVAIsoDBnewDMwLT2016v1_mvaOutput_normalization"),
566  mapping = self.cms.VPSet(
567  self.cms.PSet(
568  category = self.cms.uint32(0),
569  cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBnewDMwLT2016v1_WPEff90"),
570  variable = self.cms.string("pt"),
571  )
572  )
573  )
574 
575  self.process.rerunDiscriminationByIsolationNewDMMVArun2v1Loose = self.process.rerunDiscriminationByIsolationNewDMMVArun2v1VLoose.clone()
576  self.process.rerunDiscriminationByIsolationNewDMMVArun2v1Loose.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBnewDMwLT2016v1_WPEff80")
577  self.process.rerunDiscriminationByIsolationNewDMMVArun2v1Medium = self.process.rerunDiscriminationByIsolationNewDMMVArun2v1VLoose.clone()
578  self.process.rerunDiscriminationByIsolationNewDMMVArun2v1Medium.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBnewDMwLT2016v1_WPEff70")
579  self.process.rerunDiscriminationByIsolationNewDMMVArun2v1Tight = self.process.rerunDiscriminationByIsolationNewDMMVArun2v1VLoose.clone()
580  self.process.rerunDiscriminationByIsolationNewDMMVArun2v1Tight.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBnewDMwLT2016v1_WPEff60")
581  self.process.rerunDiscriminationByIsolationNewDMMVArun2v1VTight = self.process.rerunDiscriminationByIsolationNewDMMVArun2v1VLoose.clone()
582  self.process.rerunDiscriminationByIsolationNewDMMVArun2v1VTight.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBnewDMwLT2016v1_WPEff50")
583  self.process.rerunDiscriminationByIsolationNewDMMVArun2v1VVTight = self.process.rerunDiscriminationByIsolationNewDMMVArun2v1VLoose.clone()
584  self.process.rerunDiscriminationByIsolationNewDMMVArun2v1VVTight.mapping[0].cut = self.cms.string("RecoTauTag_tauIdMVAIsoDBnewDMwLT2016v1_WPEff40")
585 
587  self.process.rerunDiscriminationByIsolationNewDMMVArun2v1raw,
588  self.process.rerunDiscriminationByIsolationNewDMMVArun2v1VLoose,
589  self.process.rerunDiscriminationByIsolationNewDMMVArun2v1Loose,
590  self.process.rerunDiscriminationByIsolationNewDMMVArun2v1Medium,
591  self.process.rerunDiscriminationByIsolationNewDMMVArun2v1Tight,
592  self.process.rerunDiscriminationByIsolationNewDMMVArun2v1VTight,
593  self.process.rerunDiscriminationByIsolationNewDMMVArun2v1VVTight
594  )
595  self.process.rerunMvaIsolationTask.add(self.rerunIsolationNewDMMVArun2016v1Task)
596  self.process.rerunMvaIsolationSequence += self.cms.Sequence(self.rerunIsolationNewDMMVArun2016v1Task)
597 
598  tauIDSources.byIsolationMVArun2v1DBnewDMwLTraw2016 = self.cms.InputTag('rerunDiscriminationByIsolationNewDMMVArun2v1raw')
599  tauIDSources.byVLooseIsolationMVArun2v1DBnewDMwLT2016 = self.cms.InputTag('rerunDiscriminationByIsolationNewDMMVArun2v1VLoose')
600  tauIDSources.byLooseIsolationMVArun2v1DBnewDMwLT2016 = self.cms.InputTag('rerunDiscriminationByIsolationNewDMMVArun2v1Loose')
601  tauIDSources.byMediumIsolationMVArun2v1DBnewDMwLT2016 = self.cms.InputTag('rerunDiscriminationByIsolationNewDMMVArun2v1Medium')
602  tauIDSources.byTightIsolationMVArun2v1DBnewDMwLT2016 = self.cms.InputTag('rerunDiscriminationByIsolationNewDMMVArun2v1Tight')
603  tauIDSources.byVTightIsolationMVArun2v1DBnewDMwLT2016 = self.cms.InputTag('rerunDiscriminationByIsolationNewDMMVArun2v1VTight')
604  tauIDSources.byVVTightIsolationMVArun2v1DBnewDMwLT2016 = self.cms.InputTag('rerunDiscriminationByIsolationNewDMMVArun2v1VVTight')
605 
606  if "deepTau2017v1" in self.toKeep:
607  if self.debug: print "Adding DeepTau IDs"
608 
609 
610  workingPoints_ = {
611  "e": {
612  "VVVLoose" : 0.96424,
613  "VVLoose" : 0.98992,
614  "VLoose" : 0.99574,
615  "Loose": 0.99831,
616  "Medium": 0.99868,
617  "Tight": 0.99898,
618  "VTight": 0.99911,
619  "VVTight": 0.99918
620  },
621  "mu": {
622  "VVVLoose" : 0.959619,
623  "VVLoose" : 0.997687,
624  "VLoose" : 0.999392,
625  "Loose": 0.999755,
626  "Medium": 0.999854,
627  "Tight": 0.999886,
628  "VTight": 0.999944,
629  "VVTight": 0.9999971
630  },
631 
632  "jet": {
633  "VVVLoose" : 0.5329,
634  "VVLoose" : 0.7645,
635  "VLoose" : 0.8623,
636  "Loose": 0.9140,
637  "Medium": 0.9464,
638  "Tight": 0.9635,
639  "VTight": 0.9760,
640  "VVTight": 0.9859
641  }
642  }
643  file_names = ['RecoTauTag/TrainingFiles/data/DeepTauId/deepTau_2017v1_20L1024N_quantized.pb']
644  self.process.deepTau2017v1 = self.cms.EDProducer("DeepTauId",
645  electrons = self.cms.InputTag('slimmedElectrons'),
646  muons = self.cms.InputTag('slimmedMuons'),
647  taus = self.cms.InputTag('slimmedTaus'),
648  pfcands = self.cms.InputTag('packedPFCandidates'),
649  vertices = self.cms.InputTag('offlineSlimmedPrimaryVertices'),
650  rho = self.cms.InputTag('fixedGridRhoAll'),
651  graph_file = self.cms.vstring(file_names),
652  mem_mapped = self.cms.bool(False),
653  version = self.cms.uint32(self.getDeepTauVersion(file_names[0])[1])
654  )
655 
656  self.processDeepProducer('deepTau2017v1', tauIDSources, workingPoints_)
657 
658  self.process.rerunMvaIsolationTask.add(self.process.deepTau2017v1)
659  self.process.rerunMvaIsolationSequence += self.process.deepTau2017v1
660 
661  if "deepTau2017v2" in self.toKeep:
662  if self.debug: print "Adding DeepTau IDs"
663 
664  workingPoints_ = {
665  "e": {
666  "VVVLoose": 0.0630386,
667  "VVLoose": 0.1686942,
668  "VLoose": 0.3628130,
669  "Loose": 0.6815435,
670  "Medium": 0.8847544,
671  "Tight": 0.9675541,
672  "VTight": 0.9859251,
673  "VVTight": 0.9928449,
674  },
675  "mu": {
676  "VLoose": 0.1058354,
677  "Loose": 0.2158633,
678  "Medium": 0.5551894,
679  "Tight": 0.8754835,
680  },
681  "jet": {
682  "VVVLoose": 0.2599605,
683  "VVLoose": 0.4249705,
684  "VLoose": 0.5983682,
685  "Loose": 0.7848675,
686  "Medium": 0.8834768,
687  "Tight": 0.9308689,
688  "VTight": 0.9573137,
689  "VVTight": 0.9733927,
690  },
691  }
692 
693  file_names = [
694  'core:RecoTauTag/TrainingFiles/data/DeepTauId/deepTau_2017v2p6_e6_core.pb',
695  'inner:RecoTauTag/TrainingFiles/data/DeepTauId/deepTau_2017v2p6_e6_inner.pb',
696  'outer:RecoTauTag/TrainingFiles/data/DeepTauId/deepTau_2017v2p6_e6_outer.pb',
697  ]
698  self.process.deepTau2017v2 = self.cms.EDProducer("DeepTauId",
699  electrons = self.cms.InputTag('slimmedElectrons'),
700  muons = self.cms.InputTag('slimmedMuons'),
701  taus = self.cms.InputTag('slimmedTaus'),
702  pfcands = self.cms.InputTag('packedPFCandidates'),
703  vertices = self.cms.InputTag('offlineSlimmedPrimaryVertices'),
704  rho = self.cms.InputTag('fixedGridRhoAll'),
705  graph_file = self.cms.vstring(file_names),
706  mem_mapped = self.cms.bool(True),
707  version = self.cms.uint32(self.getDeepTauVersion(file_names[0])[1]),
708  debug_level = self.cms.int32(0)
709 
710  )
711 
712  self.processDeepProducer('deepTau2017v2', tauIDSources, workingPoints_)
713 
714  self.process.rerunMvaIsolationTask.add(self.process.deepTau2017v2)
715  self.process.rerunMvaIsolationSequence += self.process.deepTau2017v2
716 
717  if "DPFTau_2016_v0" in self.toKeep:
718  if self.debug: print "Adding DPFTau isolation (v0)"
719 
720 
721  workingPoints_ = {
722  "all": {
723  "Tight" : "if(decayMode == 0) return (0.898328 - 0.000160992 * pt);" + \
724  "if(decayMode == 1) return (0.910138 - 0.000229923 * pt);" + \
725  "if(decayMode == 10) return (0.873958 - 0.0002328 * pt);" + \
726  "return 99.0;"
727  #"Tight" : "? decayMode == 0 ? (0.898328 - 0.000160992 * pt) : " +
728  # "(? decayMode == 1 ? 0.910138 - 0.000229923 * pt : " +
729  # "(? decayMode == 10 ? (0.873958 - 0.0002328 * pt) : 1))"
730  # "Tight" : "(decayMode == 0) * (0.898328 - 0.000160992 * pt) + \
731  # (decayMode == 1) * (0.910138 - 0.000229923 * pt) + \
732  # (decayMode == 10) * (0.873958 - 0.0002328 * pt) "
733  }
734  }
735  file_names = [ 'RecoTauTag/TrainingFiles/data/DPFTauId/DPFIsolation_2017v0_quantized.pb' ]
736  self.process.dpfTau2016v0 = self.cms.EDProducer("DPFIsolation",
737  pfcands = self.cms.InputTag('packedPFCandidates'),
738  taus = self.cms.InputTag('slimmedTaus'),
739  vertices = self.cms.InputTag('offlineSlimmedPrimaryVertices'),
740  graph_file = self.cms.vstring(file_names),
741  version = self.cms.uint32(self.getDpfTauVersion(file_names[0])),
742  mem_mapped = self.cms.bool(False)
743  )
744 
745  self.processDeepProducer('dpfTau2016v0', tauIDSources, workingPoints_)
746 
747  self.process.rerunMvaIsolationTask.add(self.process.dpfTau2016v0)
748  self.process.rerunMvaIsolationSequence += self.process.dpfTau2016v0
749 
750 
751  if "DPFTau_2016_v1" in self.toKeep:
752  print "Adding DPFTau isolation (v1)"
753  print "WARNING: WPs are not defined for DPFTau_2016_v1"
754  print "WARNING: The score of DPFTau_2016_v1 is inverted: i.e. for Sig->0, for Bkg->1 with -1 for undefined input (preselection not passed)."
755 
756  workingPoints_ = {
757  "all": {"Tight" : 0.123} #FIXME: define WP
758  }
759 
760  file_names = [ 'RecoTauTag/TrainingFiles/data/DPFTauId/DPFIsolation_2017v1_quantized.pb' ]
761  self.process.dpfTau2016v1 = self.cms.EDProducer("DPFIsolation",
762  pfcands = self.cms.InputTag('packedPFCandidates'),
763  taus = self.cms.InputTag('slimmedTaus'),
764  vertices = self.cms.InputTag('offlineSlimmedPrimaryVertices'),
765  graph_file = self.cms.vstring(file_names),
766  version = self.cms.uint32(self.getDpfTauVersion(file_names[0])),
767  mem_mapped = self.cms.bool(False)
768  )
769 
770  self.processDeepProducer('dpfTau2016v1', tauIDSources, workingPoints_)
771 
772  self.process.rerunMvaIsolationTask.add(self.process.dpfTau2016v1)
773  self.process.rerunMvaIsolationSequence += self.process.dpfTau2016v1
774 
775  if "againstEle2018" in self.toKeep:
776  antiElectronDiscrMVA6_version = "MVA6v3_noeveto"
777  ### Define new anti-e discriminants
778  ## Raw
779  from RecoTauTag.RecoTau.PATTauDiscriminationAgainstElectronMVA6_cfi import patTauDiscriminationAgainstElectronMVA6
780  self.process.patTauDiscriminationByElectronRejectionMVA62018Raw = patTauDiscriminationAgainstElectronMVA6.clone(
781  Prediscriminants = noPrediscriminants, #already selected for MiniAOD
782  vetoEcalCracks = self.cms.bool(False), #keep taus in EB-EE cracks
783  mvaName_NoEleMatch_wGwoGSF_BL = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_NoEleMatch_wGwoGSF_BL',
784  mvaName_NoEleMatch_wGwoGSF_EC = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_NoEleMatch_wGwoGSF_EC',
785  mvaName_NoEleMatch_woGwoGSF_BL = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_NoEleMatch_woGwoGSF_BL',
786  mvaName_NoEleMatch_woGwoGSF_EC = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_NoEleMatch_woGwoGSF_EC',
787  mvaName_wGwGSF_BL = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_wGwGSF_BL',
788  mvaName_wGwGSF_EC = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_wGwGSF_EC',
789  mvaName_woGwGSF_BL = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_woGwGSF_BL',
790  mvaName_woGwGSF_EC = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_woGwGSF_EC'
791  )
792  ## WPs
793  from RecoTauTag.RecoTau.PATTauDiscriminantCutMultiplexer_cfi import patTauDiscriminantCutMultiplexer
794  # VLoose
795  self.process.patTauDiscriminationByVLooseElectronRejectionMVA62018 = patTauDiscriminantCutMultiplexer.clone(
796  PATTauProducer = self.process.patTauDiscriminationByElectronRejectionMVA62018Raw.PATTauProducer,
797  Prediscriminants = self.process.patTauDiscriminationByElectronRejectionMVA62018Raw.Prediscriminants,
798  toMultiplex = self.cms.InputTag("patTauDiscriminationByElectronRejectionMVA62018Raw"),
799  key = self.cms.InputTag("patTauDiscriminationByElectronRejectionMVA62018Raw","category"),
800  mapping = self.cms.VPSet(
801  self.cms.PSet(
802  category = self.cms.uint32(0),
803  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_NoEleMatch_woGwoGSF_BL_WPeff98'),
804  variable = self.cms.string('pt')
805  ),
806  self.cms.PSet(
807  category = self.cms.uint32(2),
808  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_NoEleMatch_wGwoGSF_BL_WPeff98'),
809  variable = self.cms.string('pt')
810  ),
811  self.cms.PSet(
812  category = self.cms.uint32(5),
813  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_woGwGSF_BL_WPeff98'),
814  variable = self.cms.string('pt')
815  ),
816  self.cms.PSet(
817  category = self.cms.uint32(7),
818  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_wGwGSF_BL_WPeff98'),
819  variable = self.cms.string('pt')
820  ),
821  self.cms.PSet(
822  category = self.cms.uint32(8),
823  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_NoEleMatch_woGwoGSF_EC_WPeff98'),
824  variable = self.cms.string('pt')
825  ),
826  self.cms.PSet(
827  category = self.cms.uint32(10),
828  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_NoEleMatch_wGwoGSF_EC_WPeff98'),
829  variable = self.cms.string('pt')
830  ),
831  self.cms.PSet(
832  category = self.cms.uint32(13),
833  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_woGwGSF_EC_WPeff98'),
834  variable = self.cms.string('pt')
835  ),
836  self.cms.PSet(
837  category = self.cms.uint32(15),
838  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_wGwGSF_EC_WPeff98'),
839  variable = self.cms.string('pt')
840  )
841  )
842  )
843  # Loose
844  self.process.patTauDiscriminationByLooseElectronRejectionMVA62018 = self.process.patTauDiscriminationByVLooseElectronRejectionMVA62018.clone(
845  mapping = self.cms.VPSet(
846  self.cms.PSet(
847  category = self.cms.uint32(0),
848  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_NoEleMatch_woGwoGSF_BL_WPeff90'),
849  variable = self.cms.string('pt')
850  ),
851  self.cms.PSet(
852  category = self.cms.uint32(2),
853  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_NoEleMatch_wGwoGSF_BL_WPeff90'),
854  variable = self.cms.string('pt')
855  ),
856  self.cms.PSet(
857  category = self.cms.uint32(5),
858  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_woGwGSF_BL_WPeff90'),
859  variable = self.cms.string('pt')
860  ),
861  self.cms.PSet(
862  category = self.cms.uint32(7),
863  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_wGwGSF_BL_WPeff90'),
864  variable = self.cms.string('pt')
865  ),
866  self.cms.PSet(
867  category = self.cms.uint32(8),
868  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_NoEleMatch_woGwoGSF_EC_WPeff90'),
869  variable = self.cms.string('pt')
870  ),
871  self.cms.PSet(
872  category = self.cms.uint32(10),
873  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_NoEleMatch_wGwoGSF_EC_WPeff90'),
874  variable = self.cms.string('pt')
875  ),
876  self.cms.PSet(
877  category = self.cms.uint32(13),
878  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_woGwGSF_EC_WPeff90'),
879  variable = self.cms.string('pt')
880  ),
881  self.cms.PSet(
882  category = self.cms.uint32(15),
883  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_wGwGSF_EC_WPeff90'),
884  variable = self.cms.string('pt')
885  )
886  )
887  )
888  # Medium
889  self.process.patTauDiscriminationByMediumElectronRejectionMVA62018 = self.process.patTauDiscriminationByVLooseElectronRejectionMVA62018.clone(
890  mapping = self.cms.VPSet(
891  self.cms.PSet(
892  category = self.cms.uint32(0),
893  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_NoEleMatch_woGwoGSF_BL_WPeff80'),
894  variable = self.cms.string('pt')
895  ),
896  self.cms.PSet(
897  category = self.cms.uint32(2),
898  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_NoEleMatch_wGwoGSF_BL_WPeff80'),
899  variable = self.cms.string('pt')
900  ),
901  self.cms.PSet(
902  category = self.cms.uint32(5),
903  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_woGwGSF_BL_WPeff80'),
904  variable = self.cms.string('pt')
905  ),
906  self.cms.PSet(
907  category = self.cms.uint32(7),
908  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_wGwGSF_BL_WPeff80'),
909  variable = self.cms.string('pt')
910  ),
911  self.cms.PSet(
912  category = self.cms.uint32(8),
913  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_NoEleMatch_woGwoGSF_EC_WPeff80'),
914  variable = self.cms.string('pt')
915  ),
916  self.cms.PSet(
917  category = self.cms.uint32(10),
918  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_NoEleMatch_wGwoGSF_EC_WPeff80'),
919  variable = self.cms.string('pt')
920  ),
921  self.cms.PSet(
922  category = self.cms.uint32(13),
923  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_woGwGSF_EC_WPeff80'),
924  variable = self.cms.string('pt')
925  ),
926  self.cms.PSet(
927  category = self.cms.uint32(15),
928  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_wGwGSF_EC_WPeff80'),
929  variable = self.cms.string('pt')
930  )
931  )
932  )
933  # Tight
934  self.process.patTauDiscriminationByTightElectronRejectionMVA62018 = self.process.patTauDiscriminationByVLooseElectronRejectionMVA62018.clone(
935  mapping = self.cms.VPSet(
936  self.cms.PSet(
937  category = self.cms.uint32(0),
938  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_NoEleMatch_woGwoGSF_BL_WPeff70'),
939  variable = self.cms.string('pt')
940  ),
941  self.cms.PSet(
942  category = self.cms.uint32(2),
943  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_NoEleMatch_wGwoGSF_BL_WPeff70'),
944  variable = self.cms.string('pt')
945  ),
946  self.cms.PSet(
947  category = self.cms.uint32(5),
948  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_woGwGSF_BL_WPeff70'),
949  variable = self.cms.string('pt')
950  ),
951  self.cms.PSet(
952  category = self.cms.uint32(7),
953  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_wGwGSF_BL_WPeff70'),
954  variable = self.cms.string('pt')
955  ),
956  self.cms.PSet(
957  category = self.cms.uint32(8),
958  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_NoEleMatch_woGwoGSF_EC_WPeff70'),
959  variable = self.cms.string('pt')
960  ),
961  self.cms.PSet(
962  category = self.cms.uint32(10),
963  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_NoEleMatch_wGwoGSF_EC_WPeff70'),
964  variable = self.cms.string('pt')
965  ),
966  self.cms.PSet(
967  category = self.cms.uint32(13),
968  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_woGwGSF_EC_WPeff70'),
969  variable = self.cms.string('pt')
970  ),
971  self.cms.PSet(
972  category = self.cms.uint32(15),
973  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_wGwGSF_EC_WPeff70'),
974  variable = self.cms.string('pt')
975  )
976  )
977  )
978  # VTight
979  self.process.patTauDiscriminationByVTightElectronRejectionMVA62018 = self.process.patTauDiscriminationByVLooseElectronRejectionMVA62018.clone(
980  mapping = self.cms.VPSet(
981  self.cms.PSet(
982  category = self.cms.uint32(0),
983  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_NoEleMatch_woGwoGSF_BL_WPeff60'),
984  variable = self.cms.string('pt')
985  ),
986  self.cms.PSet(
987  category = self.cms.uint32(2),
988  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_NoEleMatch_wGwoGSF_BL_WPeff60'),
989  variable = self.cms.string('pt')
990  ),
991  self.cms.PSet(
992  category = self.cms.uint32(5),
993  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_woGwGSF_BL_WPeff60'),
994  variable = self.cms.string('pt')
995  ),
996  self.cms.PSet(
997  category = self.cms.uint32(7),
998  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_wGwGSF_BL_WPeff60'),
999  variable = self.cms.string('pt')
1000  ),
1001  self.cms.PSet(
1002  category = self.cms.uint32(8),
1003  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_NoEleMatch_woGwoGSF_EC_WPeff60'),
1004  variable = self.cms.string('pt')
1005  ),
1006  self.cms.PSet(
1007  category = self.cms.uint32(10),
1008  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_NoEleMatch_wGwoGSF_EC_WPeff60'),
1009  variable = self.cms.string('pt')
1010  ),
1011  self.cms.PSet(
1012  category = self.cms.uint32(13),
1013  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_woGwGSF_EC_WPeff60'),
1014  variable = self.cms.string('pt')
1015  ),
1016  self.cms.PSet(
1017  category = self.cms.uint32(15),
1018  cut = self.cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_gbr_wGwGSF_EC_WPeff60'),
1019  variable = self.cms.string('pt')
1020  )
1021  )
1022  )
1023  ### Put all new anti-e discrminats to a sequence
1024  self.process.patTauDiscriminationByElectronRejectionMVA62018Task = self.cms.Task(
1025  self.process.patTauDiscriminationByElectronRejectionMVA62018Raw,
1026  self.process.patTauDiscriminationByVLooseElectronRejectionMVA62018,
1027  self.process.patTauDiscriminationByLooseElectronRejectionMVA62018,
1028  self.process.patTauDiscriminationByMediumElectronRejectionMVA62018,
1029  self.process.patTauDiscriminationByTightElectronRejectionMVA62018,
1030  self.process.patTauDiscriminationByVTightElectronRejectionMVA62018
1031  )
1032  self.process.patTauDiscriminationByElectronRejectionMVA62018Seq = self.cms.Sequence(self.process.patTauDiscriminationByElectronRejectionMVA62018Task)
1033  self.process.rerunMvaIsolationTask.add(self.process.patTauDiscriminationByElectronRejectionMVA62018Task)
1034  self.process.rerunMvaIsolationSequence += self.process.patTauDiscriminationByElectronRejectionMVA62018Seq
1035 
1036  _againstElectronTauIDSources = self.cms.PSet(
1037  againstElectronMVA6Raw2018 = self.cms.InputTag("patTauDiscriminationByElectronRejectionMVA62018Raw"),
1038  againstElectronMVA6category2018 = self.cms.InputTag("patTauDiscriminationByElectronRejectionMVA62018Raw","category"),
1039  againstElectronVLooseMVA62018 = self.cms.InputTag("patTauDiscriminationByVLooseElectronRejectionMVA62018"),
1040  againstElectronLooseMVA62018 = self.cms.InputTag("patTauDiscriminationByLooseElectronRejectionMVA62018"),
1041  againstElectronMediumMVA62018 = self.cms.InputTag("patTauDiscriminationByMediumElectronRejectionMVA62018"),
1042  againstElectronTightMVA62018 = self.cms.InputTag("patTauDiscriminationByTightElectronRejectionMVA62018"),
1043  againstElectronVTightMVA62018 = self.cms.InputTag("patTauDiscriminationByVTightElectronRejectionMVA62018")
1044  )
1045  _tauIDSourcesWithAgainistEle = self.cms.PSet(
1046  tauIDSources.clone(),
1047  _againstElectronTauIDSources
1048  )
1049  tauIDSources =_tauIDSourcesWithAgainistEle.clone()
1050 
1051 
1052  if self.debug: print 'Embedding new TauIDs into \"'+self.updatedTauName+'\"'
1053  embedID = self.cms.EDProducer("PATTauIDEmbedder",
1054  src = self.cms.InputTag('slimmedTaus'),
1055  tauIDSources = tauIDSources
1056  )
1057  setattr(self.process, self.updatedTauName, embedID)
1058 
1059 
1060  def processDeepProducer(self, producer_name, tauIDSources, workingPoints_):
1061  for target,points in workingPoints_.iteritems():
1062  cuts = self.cms.PSet()
1063  setattr(tauIDSources, 'by{}VS{}raw'.format(producer_name[0].upper()+producer_name[1:], target),
1064  self.cms.InputTag(producer_name, 'VS{}'.format(target)))
1065  for point,cut in points.iteritems():
1066  setattr(cuts, point, self.cms.string(str(cut)))
1067 
1068  setattr(tauIDSources, 'by{}{}VS{}'.format(point, producer_name[0].upper()+producer_name[1:], target),
1069  self.cms.InputTag(producer_name, 'VS{}{}'.format(target, point)))
1070 
1071  setattr(getattr(self.process, producer_name), 'VS{}WP'.format(target), cuts)
1072 
1073 
1074  def getDpfTauVersion(self, file_name):
1075  """returns the DNN version. File name should contain a version label with data takig year (2011-2, 2015-8) and \
1076  version number (vX), e.g. 2017v0, in general the following format: {year}v{version}"""
1077  version_search = re.search('201[125678]v([0-9]+)[\._]', file_name)
1078  if not version_search:
1079  raise RuntimeError('File "{}" has an invalid name pattern, should be in the format "{year}v{version}". \
1080  Unable to extract version number.'.format(file_name))
1081  version = version_search.group(1)
1082  return int(version)
1083 
1084  def getDeepTauVersion(self, file_name):
1085  """returns the DeepTau year, version, subversion. File name should contain a version label with data takig year \
1086  (2011-2, 2015-8), version number (vX) and subversion (pX), e.g. 2017v0p6, in general the following format: \
1087  {year}v{version}p{subversion}"""
1088  version_search = re.search('(201[125678])v([0-9]+)(p[0-9]+|)[\._]', file_name)
1089  if not version_search:
1090  raise RuntimeError('File "{}" has an invalid name pattern, should be in the format "{year}v{version}p{subversion}". \
1091  Unable to extract version number.'.format(file_name))
1092  year = version_search.group(1)
1093  version = version_search.group(2)
1094  subversion = version_search.group(3)
1095  if len(subversion) > 0:
1096  subversion = subversion[1:]
1097  else:
1098  subversion = 0
1099  return int(year), int(version), int(subversion)
def is_above_cmssw_version(klass, release=9, subversion=4, patch=0, debug=False)
Definition: runTauIdMVA.py:80
def getDeepTauVersion(self, file_name)
def get_cmssw_version_number(klass, debug=False)
Definition: runTauIdMVA.py:62
def get_cmssw_version(debug=False)
Definition: runTauIdMVA.py:55
def getDpfTauVersion(self, file_name)
def loadMVA_WPs_run2_2017(self)
Definition: runTauIdMVA.py:89
def processDeepProducer(self, producer_name, tauIDSources, workingPoints_)
def versionToInt(release=9, subversion=4, patch=0, debug=False)
Definition: runTauIdMVA.py:73
#define str(s)
double split
Definition: MVATrainer.cc:139