213 def configureMonitor( self ):
215 acc = self.helper.resobj
216 EgammaMatchTool = CompFactory.TrigEgammaMatchingToolMT()
217 EgammaMatchTool.DeltaR=0.4
218 acc.addPublicTool(EgammaMatchTool)
219 cppyy.load_library(
'libElectronPhotonSelectorToolsDict')
223 LooseElectronSelector = CompFactory.AsgElectronIsEMSelector(
"T0HLTLooseElectronSelector")
224 MediumElectronSelector = CompFactory.AsgElectronIsEMSelector(
"T0HLTMediumElectronSelector")
225 TightElectronSelector = CompFactory.AsgElectronIsEMSelector(
"T0HLTTightElectronSelector")
226 LooseLHSelector = CompFactory.AsgElectronLikelihoodTool(
"T0HLTLooseLHSelector")
227 MediumLHSelector = CompFactory.AsgElectronLikelihoodTool(
"T0HLTMediumLHSelector")
228 TightLHSelector = CompFactory.AsgElectronLikelihoodTool(
"T0HLTTightLHSelector")
229 VeryLooseLHSelector = CompFactory.AsgElectronLikelihoodTool(
"T0HLTVeryLooseLHSelector")
232 LooseDNNElectronSelector = CompFactory.AsgElectronSelectorTool(
"T0HLTLooseElectronDNNSelector")
233 MediumDNNElectronSelector = CompFactory.AsgElectronSelectorTool(
"T0HLTMediumElectronDNNSelector")
234 TightDNNElectronSelector = CompFactory.AsgElectronSelectorTool(
"T0HLTTightElectronDNNSelector")
236 LoosePhotonSelector = CompFactory.AsgPhotonIsEMSelector(
"T0HLTLoosePhotonSelector" )
237 MediumPhotonSelector = CompFactory.AsgPhotonIsEMSelector(
"T0HLTMediumPhotonSelector" )
238 TightPhotonSelector = CompFactory.AsgPhotonIsEMSelector(
"T0HLTTightPhotonSelector" )
240 LoosePhotonSelector.ForceConvertedPhotonPID =
True
241 LoosePhotonSelector.isEMMask = SelectionDefPhoton.PhotonLoose
242 MediumPhotonSelector.ForceConvertedPhotonPID =
True
243 MediumPhotonSelector.isEMMask = SelectionDefPhoton.PhotonMedium
244 TightPhotonSelector.ForceConvertedPhotonPID =
True
245 TightPhotonSelector.isEMMask = SelectionDefPhoton.PhotonTight
248 acc.addPublicTool(LooseElectronSelector)
249 acc.addPublicTool(MediumElectronSelector)
250 acc.addPublicTool(TightElectronSelector)
251 acc.addPublicTool(LooseLHSelector)
252 acc.addPublicTool(MediumLHSelector)
253 acc.addPublicTool(TightLHSelector)
254 acc.addPublicTool(VeryLooseLHSelector)
255 acc.addPublicTool(LooseDNNElectronSelector)
256 acc.addPublicTool(MediumDNNElectronSelector)
257 acc.addPublicTool(TightDNNElectronSelector)
259 if self.runFlag ==
'2022':
260 raise RuntimeError(
'2022 (Run 3) configuration not available yet' )
263 elif self.runFlag ==
'2018':
265 LooseElectronSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc15_20150712/ElectronIsEMLooseSelectorCutDefs.conf"
266 MediumElectronSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc15_20150712/ElectronIsEMMediumSelectorCutDefs.conf"
267 TightElectronSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc15_20150712/ElectronIsEMTightSelectorCutDefs.conf"
269 LooseLHSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc20_20210514/ElectronLikelihoodLooseOfflineConfig2017_CutBL_Smooth.conf"
270 MediumLHSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc20_20210514/ElectronLikelihoodMediumOfflineConfig2017_Smooth.conf"
271 TightLHSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc20_20210514/ElectronLikelihoodTightOfflineConfig2017_Smooth.conf"
272 VeryLooseLHSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc20_20210514/ElectronLikelihoodVeryLooseOfflineConfig2017_Smooth.conf"
274 LooseDNNElectronSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc16_20210430/ElectronDNNMulticlassLoose.conf"
275 MediumDNNElectronSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc16_20210430/ElectronDNNMulticlassMedium.conf"
276 TightDNNElectronSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc16_20210430/ElectronDNNMulticlassTight.conf"
278 TightPhotonSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc15_20150712/PhotonIsEMTightSelectorCutDefs.conf"
279 MediumPhotonSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc15_20150712/PhotonIsEMMediumSelectorCutDefs.conf"
280 LoosePhotonSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc15_20150712/PhotonIsEMLooseSelectorCutDefs.conf"
282 elif self.runFlag ==
'2017':
284 LooseElectronSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc15_20150712/ElectronIsEMLooseSelectorCutDefs.conf"
285 MediumElectronSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc15_20150712/ElectronIsEMMediumSelectorCutDefs.conf"
286 TightElectronSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc15_20150712/ElectronIsEMTightSelectorCutDefs.conf"
288 LooseLHSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc15_20160512/ElectronLikelihoodLooseOfflineConfig2016_CutBL_Smooth.conf"
289 MediumLHSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc15_20160512/ElectronLikelihoodMediumOfflineConfig2016_Smooth.conf"
290 TightLHSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc15_20160512/ElectronLikelihoodTightOfflineConfig2016_Smooth.conf"
291 VeryLooseLHSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc15_20160512/ElectronLikelihoodVeryLooseOfflineConfig2016_Smooth.conf"
293 LooseDNNElectronSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc16_20210430/ElectronDNNMulticlassLoose.conf"
294 MediumDNNElectronSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc16_20210430/ElectronDNNMulticlassMedium.conf"
295 TightDNNElectronSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc16_20210430/ElectronDNNMulticlassTight.conf"
297 TightPhotonSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc15_20150712/PhotonIsEMTightSelectorCutDefs.conf"
298 MediumPhotonSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc15_20150712/PhotonIsEMMediumSelectorCutDefs.conf"
299 LoosePhotonSelector.ConfigFile =
"ElectronPhotonSelectorTools/offline/mc15_20150712/PhotonIsEMLooseSelectorCutDefs.conf"
303 raise RuntimeError(
'Wrong run flag configuration' )
307 if self.activate_zee:
310 self.__logger.
info(
"Creating the Zee monitor algorithm LH only...")
311 self.zeeMonAlg = self.helper.addAlgorithm( CompFactory.TrigEgammaMonitorTagAndProbeAlgorithm,
"TrigEgammaMonitorTagAndProbeAlgorithm_Zee_LH" )
312 self.zeeMonAlg.Analysis=
'Zee'
313 self.zeeMonAlg.MatchTool = EgammaMatchTool
314 self.zeeMonAlg.TPTrigger=
False
315 self.zeeMonAlg.ElectronKey =
'Electrons'
316 self.zeeMonAlg.isEMResultNames=self.isemnames
317 self.zeeMonAlg.LHResultNames=self.lhnames
318 self.zeeMonAlg.DNNResultNames=self.dnnnames
319 self.zeeMonAlg.ElectronIsEMSelector =[TightElectronSelector,MediumElectronSelector,LooseElectronSelector]
320 self.zeeMonAlg.ElectronLikelihoodTool =[TightLHSelector,MediumLHSelector,LooseLHSelector,VeryLooseLHSelector]
321 self.zeeMonAlg.ElectronDNNSelectorTool =[TightDNNElectronSelector,MediumDNNElectronSelector,LooseDNNElectronSelector]
322 self.zeeMonAlg.ZeeLowerMass=80
323 self.zeeMonAlg.ZeeUpperMass=100
324 self.zeeMonAlg.OfflineTagMinEt=25
325 self.zeeMonAlg.OfflineTagSelector=
'lhtight'
326 self.zeeMonAlg.OfflineProbeSelector=
'lhloose'
327 self.zeeMonAlg.OppositeCharge=
True
328 self.zeeMonAlg.RemoveCrack=
False
329 self.zeeMonAlg.TagTriggerList=tagItems
330 self.zeeMonAlg.TriggerList=tpList
331 self.zeeMonAlg.DetailedHistograms=self.detailedHistograms
332 self.zeeMonAlg.DoEmulation =
False
333 self.zeeMonAlg.ApplyJetNearProbeSelection =
False
339 self.__logger.
info(
"Creating the Zee monitor algorithm DNN only...")
340 self.zeeMonAlg_dnn = self.helper.addAlgorithm( CompFactory.TrigEgammaMonitorTagAndProbeAlgorithm,
"TrigEgammaMonitorTagAndProbeAlgorithm_Zee_DNN" )
341 self.zeeMonAlg_dnn.Analysis=
'Zee_DNN'
342 self.zeeMonAlg_dnn.MatchTool = EgammaMatchTool
343 self.zeeMonAlg_dnn.TPTrigger=
False
344 self.zeeMonAlg_dnn.ElectronKey =
'Electrons'
345 self.zeeMonAlg_dnn.isEMResultNames=self.isemnames
346 self.zeeMonAlg_dnn.LHResultNames=self.lhnames
347 self.zeeMonAlg_dnn.DNNResultNames=self.dnnnames
348 self.zeeMonAlg_dnn.ElectronIsEMSelector =[TightElectronSelector,MediumElectronSelector,LooseElectronSelector]
349 self.zeeMonAlg_dnn.ElectronLikelihoodTool =[TightLHSelector,MediumLHSelector,LooseLHSelector,VeryLooseLHSelector]
350 self.zeeMonAlg_dnn.ElectronDNNSelectorTool =[TightDNNElectronSelector,MediumDNNElectronSelector,LooseDNNElectronSelector]
351 self.zeeMonAlg_dnn.ZeeLowerMass=80
352 self.zeeMonAlg_dnn.ZeeUpperMass=100
353 self.zeeMonAlg_dnn.OfflineTagMinEt=25
354 self.zeeMonAlg_dnn.OfflineTagSelector=
'dnntight'
355 self.zeeMonAlg_dnn.OfflineProbeSelector=
'dnnloose'
356 self.zeeMonAlg_dnn.OppositeCharge=
True
357 self.zeeMonAlg_dnn.RemoveCrack=
False
358 self.zeeMonAlg_dnn.TagTriggerList=tagItems
359 self.zeeMonAlg_dnn.TriggerList=tpList
360 self.zeeMonAlg_dnn.DetailedHistograms=self.detailedHistograms
361 self.zeeMonAlg_dnn.DoEmulation =
False
362 self.zeeMonAlg_dnn.ApplyJetNearProbeSelection =
False
365 self.emulator.TriggerList += self.tpList
366 self.zeeMonAlg.DoEmulation =
True
367 self.zeeMonAlg.EmulationTool = self.emulator.core()
368 self.zeeMonAlg_dnn.DoEmulation =
True
369 self.zeeMonAlg_dnn.EmulationTool = self.emulator.core()
374 if self.activate_jpsiee:
376 self.__logger.
info(
"Creating the Jpsiee monitor algorithm...")
377 self.jpsieeMonAlg = self.helper.addAlgorithm( CompFactory.TrigEgammaMonitorTagAndProbeAlgorithm,
"TrigEgammaMonitorTagAndProbeAlgorithm_Jpsiee" )
378 self.jpsieeMonAlg.DoJpsiee=
True
379 self.jpsieeMonAlg.Analysis=
'Jpsiee'
380 self.jpsieeMonAlg.MatchTool = EgammaMatchTool
381 self.jpsieeMonAlg.TPTrigger=
False
382 self.jpsieeMonAlg.ElectronKey =
'Electrons'
383 self.jpsieeMonAlg.isEMResultNames=self.isemnames
384 self.jpsieeMonAlg.LHResultNames=self.lhnames
385 self.jpsieeMonAlg.DNNResultNames=self.dnnnames
386 self.jpsieeMonAlg.ElectronIsEMSelector =[TightElectronSelector,MediumElectronSelector,LooseElectronSelector]
387 self.jpsieeMonAlg.ElectronLikelihoodTool =[TightLHSelector,MediumLHSelector,LooseLHSelector,VeryLooseLHSelector]
388 self.jpsieeMonAlg.ElectronDNNSelectorTool =[TightDNNElectronSelector,MediumDNNElectronSelector,LooseDNNElectronSelector]
389 self.jpsieeMonAlg.ZeeLowerMass=2
390 self.jpsieeMonAlg.ZeeUpperMass=5
391 self.jpsieeMonAlg.OfflineTagMinEt=5
392 self.jpsieeMonAlg.OfflineTagSelector=
'lhtight'
393 self.jpsieeMonAlg.OfflineProbeSelector=
'lhloose'
394 self.jpsieeMonAlg.OppositeCharge=
True
395 self.jpsieeMonAlg.RemoveCrack=
False
396 self.jpsieeMonAlg.TagTriggerList=self.jpsitagItems
397 self.jpsieeMonAlg.TriggerList=self.jpsiList
398 self.jpsieeMonAlg.DetailedHistograms=self.detailedHistograms
399 self.jpsieeMonAlg.DoEmulation =
False
400 self.jpsieeMonAlg.ApplyJetNearProbeSelection =
False
402 if self.activate_electron:
404 self.__logger.
info(
"Creating the Electron monitor algorithm...")
405 self.elMonAlg = self.helper.addAlgorithm( CompFactory.TrigEgammaMonitorElectronAlgorithm,
"TrigEgammaMonitorElectronAlgorithm" )
406 self.elMonAlg.MatchTool = EgammaMatchTool
407 self.elMonAlg.Analysis =
"Electrons"
408 self.elMonAlg.ElectronKey =
'Electrons'
409 self.elMonAlg.isEMResultNames=self.isemnames
410 self.elMonAlg.LHResultNames=self.lhnames
411 self.elMonAlg.DNNResultNames=self.dnnnames
412 self.elMonAlg.ElectronIsEMSelector =[TightElectronSelector,MediumElectronSelector,LooseElectronSelector]
413 self.elMonAlg.ElectronLikelihoodTool =[TightLHSelector,MediumLHSelector,LooseLHSelector,VeryLooseLHSelector]
414 self.elMonAlg.ForcePidSelection=
True
415 self.elMonAlg.ForceProbeIsolation=
False
416 self.elMonAlg.ForceEtThreshold=
True
417 self.elMonAlg.TriggerList=self.electronList
418 self.elMonAlg.DetailedHistograms=self.detailedHistograms
419 self.elMonAlg.DoEmulation =
False
422 self.elMonAlg.DoEmulation =
True
423 self.emulator.TriggerList += self.electronList
424 self.elMonAlg.EmulationTool = self.emulator.core()
427 if self.activate_photon:
429 self.__logger.
info(
"Creating the Photon monitor algorithm...")
430 self.phMonAlg = self.helper.addAlgorithm( CompFactory.TrigEgammaMonitorPhotonAlgorithm,
"TrigEgammaMonitorPhotonAlgorithm" )
431 self.phMonAlg.Analysis =
"Photons"
432 self.phMonAlg.MatchTool = EgammaMatchTool
433 self.phMonAlg.PhotonKey =
'Photons'
434 self.phMonAlg.PhotonIsolationKeys = [
"Photons.topoetcone20",
"Photons.topoetcone40"]
435 self.phMonAlg.isEMResultNames=self.isemnames
436 self.phMonAlg.LHResultNames=self.lhnames
437 self.phMonAlg.PhotonIsEMSelector =[TightPhotonSelector,MediumPhotonSelector,LoosePhotonSelector]
438 self.phMonAlg.TriggerList=self.photonList
439 self.phMonAlg.BootstrapTriggerMap = self.bootstrapMap
440 self.phMonAlg.DetailedHistograms=self.detailedHistograms
441 self.phMonAlg.ForcePidSelection=
True
442 self.phMonAlg.DoUnconverted=
False
443 self.phMonAlg.DoEmulation =
False
444 self.phMonAlg.OnlyHLT = self.onlyHLT
448 self.phMonAlg.DoEmulation =
True
449 self.emulator.TriggerList += self.photonList
450 self.phMonAlg.EmulationTool = self.emulator.core()
453 if self.activate_topo:
455 self.__logger.
info(
"Creating the combo monitor algorithm...")
456 self.topoMonAlg = self.helper.addAlgorithm( CompFactory.TrigEgammaMonitorTopoAlgorithm,
"TrigEgammaMonitorTopoAlgorithm" )
457 self.topoMonAlg.MatchTool = EgammaMatchTool
458 self.topoMonAlg.ElectronKey =
'Electrons'
459 self.topoMonAlg.PhotonKey =
'Photons'
460 self.topoMonAlg.isEMResultNames=self.isemnames
461 self.topoMonAlg.LHResultNames=self.lhnames
462 self.topoMonAlg.DNNResultNames=self.dnnnames
463 self.topoMonAlg.ElectronIsEMSelector =[TightElectronSelector,MediumElectronSelector,LooseElectronSelector]
464 self.topoMonAlg.ElectronLikelihoodTool =[TightLHSelector,MediumLHSelector,LooseLHSelector]
465 self.topoMonAlg.DetailedHistograms=self.detailedHistograms
466 self.topoMonAlg.TriggerListConfig = self.topoList