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