ATLAS Offline Software
EMPIDBuilderConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 __doc__ = "Configure the electron and photon selectors."
4 
5 from AthenaCommon.Logging import logging
6 from AthenaConfiguration.ComponentFactory import CompFactory
7 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
8 from ElectronPhotonSelectorTools.EgammaPIDdefs import egammaPID
9 
10 
11 def EMPIDBuilderElectronCfg(flags, name='EMPIDBuilderElectron', **kwargs):
12 
13  mlog = logging.getLogger(name)
14  mlog.debug('Start configuration')
15 
16  acc = ComponentAccumulator()
17 
18  # Electron Selectors
19  # Cut based
20  from ROOT import LikeEnum
21  from ElectronPhotonSelectorTools.AsgElectronIsEMSelectorsConfig import (
22  AsgElectronIsEMSelectorCfg)
23  if "electronIsEMselectors" not in kwargs:
24  LooseElectronSelectorAcc = AsgElectronIsEMSelectorCfg(
25  flags, "LooseElectronSelector", egammaPID.ElectronIDLoosePP)
26  MediumElectronSelectorAcc = AsgElectronIsEMSelectorCfg(
27  flags, "MediumElectronSelector", egammaPID.ElectronIDMediumPP)
28  TightElectronSelectorAcc = AsgElectronIsEMSelectorCfg(
29  flags, "TightElectronSelector", egammaPID.ElectronIDTightPP)
30 
31  kwargs["electronIsEMselectors"] = [
32  LooseElectronSelectorAcc.popPrivateTools(),
33  MediumElectronSelectorAcc.popPrivateTools(),
34  TightElectronSelectorAcc.popPrivateTools()]
35  kwargs["electronIsEMselectorResultNames"] = [
36  "Loose", "Medium", "Tight"]
37  acc.merge(LooseElectronSelectorAcc)
38  acc.merge(MediumElectronSelectorAcc)
39  acc.merge(TightElectronSelectorAcc)
40 
41  # Likelihood
42  from ElectronPhotonSelectorTools.AsgElectronLikelihoodToolsConfig import (
43  AsgElectronLikelihoodToolCfg)
44  if "electronLHselectors" not in kwargs:
45  LooseLHSelectorAcc = AsgElectronLikelihoodToolCfg(
46  flags, "LooseLHSelector", LikeEnum.Loose)
47  LooseLHSelectorAcc.primaryVertexContainer = "PrimaryVertices"
48  MediumLHSelectorAcc = AsgElectronLikelihoodToolCfg(
49  flags, "MediumLHSelector", LikeEnum.Medium)
50  MediumLHSelectorAcc.primaryVertexContainer = "PrimaryVertices"
51  TightLHSelectorAcc = AsgElectronLikelihoodToolCfg(
52  flags, "TightLHSelector", LikeEnum.Tight)
53  TightLHSelectorAcc.primaryVertexContainer = "PrimaryVertices"
54  kwargs["electronLHselectors"] = [LooseLHSelectorAcc.popPrivateTools(),
55  MediumLHSelectorAcc.popPrivateTools(),
56  TightLHSelectorAcc.popPrivateTools()]
57  kwargs["electronLHselectorResultNames"] = [
58  "LHLoose", "LHMedium", "LHTight"]
59  acc.merge(LooseLHSelectorAcc)
60  acc.merge(MediumLHSelectorAcc)
61  acc.merge(TightLHSelectorAcc)
62 
63  tool = CompFactory.EMPIDBuilder(name, **kwargs)
64 
65  acc.setPrivateTools(tool)
66  return acc
67 
68 
69 def EMPIDBuilderPhotonCfg(flags, name='EMPIDBuilderPhoton', **kwargs):
70 
71  mlog = logging.getLogger(name)
72  mlog.debug('Start configuration')
73 
74  acc = ComponentAccumulator()
75 
76  # photon Selectors
77  from ElectronPhotonSelectorTools.AsgPhotonIsEMSelectorsConfig import (
78  AsgPhotonIsEMSelectorCfg)
79  LoosePhotonSelectorAcc = AsgPhotonIsEMSelectorCfg(
80  flags, "LoosePhotonSelector", egammaPID.PhotonIDLoose)
81  TightPhotonSelectorAcc = AsgPhotonIsEMSelectorCfg(
82  flags, "TightPhotonSelector", egammaPID.PhotonIDTight)
83 
84  if "photonIsEMselectors" not in kwargs:
85  kwargs["photonIsEMselectors"] = [
86  LoosePhotonSelectorAcc.popPrivateTools(),
87  TightPhotonSelectorAcc.popPrivateTools()]
88  kwargs["photonIsEMselectorResultNames"] = ["Loose", "Tight"]
89 
90  acc.merge(LoosePhotonSelectorAcc)
91  acc.merge(TightPhotonSelectorAcc)
92 
93  tool = CompFactory.EMPIDBuilder(name, **kwargs)
94  acc.setPrivateTools(tool)
95  return acc
96 
97 
98 if __name__ == "__main__":
99 
100  from AthenaConfiguration.AllConfigFlags import initConfigFlags
101  from AthenaConfiguration.ComponentAccumulator import printProperties
102  from AthenaConfiguration.TestDefaults import defaultTestFiles
103  flags = initConfigFlags()
104  flags.Input.Files = defaultTestFiles.RDO_RUN2
105  flags.fillFromArgs()
106  flags.lock()
107  flags.dump()
108 
110  mlog = logging.getLogger("EMPIDBuilderConfigTest")
111  mlog.info("Configuring EMPIDBuilderElectron: ")
112  printProperties(mlog, cfg.popToolsAndMerge(
113  EMPIDBuilderElectronCfg(flags)),
114  nestLevel=1,
115  printDefaults=True)
116  mlog.info("Configuring EMPIDBuilderPhoton: ")
117  printProperties(mlog, cfg.popToolsAndMerge(
118  EMPIDBuilderPhotonCfg(flags)),
119  nestLevel=1,
120  printDefaults=True)
121 
122  f = open("empidbuilder.pkl", "wb")
123  cfg.store(f)
124  f.close()
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.AsgElectronLikelihoodToolsConfig.AsgElectronLikelihoodToolCfg
def AsgElectronLikelihoodToolCfg(flag, name, quality, menu=electronLHmenu.offlineMC21)
Definition: AsgElectronLikelihoodToolsConfig.py:13
EMPIDBuilderConfig.EMPIDBuilderElectronCfg
def EMPIDBuilderElectronCfg(flags, name='EMPIDBuilderElectron', **kwargs)
Definition: EMPIDBuilderConfig.py:11
EMPIDBuilderConfig.EMPIDBuilderPhotonCfg
def EMPIDBuilderPhotonCfg(flags, name='EMPIDBuilderPhoton', **kwargs)
Definition: EMPIDBuilderConfig.py:69
python.AsgPhotonIsEMSelectorsConfig.AsgPhotonIsEMSelectorCfg
def AsgPhotonIsEMSelectorCfg(flags, name, quality, menu=photonPIDmenu.menuCurrentCuts, trigger=False)
Definition: AsgPhotonIsEMSelectorsConfig.py:15
extractSporadic.printProperties
def printProperties(h, q, hLB)
Definition: extractSporadic.py:8
python.AsgElectronIsEMSelectorsConfig.AsgElectronIsEMSelectorCfg
def AsgElectronIsEMSelectorCfg(flags, name, quality, menu=electronPIDmenu.menuDC14)
Definition: AsgElectronIsEMSelectorsConfig.py:14
Trk::open
@ open
Definition: BinningType.h:40
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19