ATLAS Offline Software
Loading...
Searching...
No Matches
EMPIDBuilderConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2
3""" Configure the electron and photon selectors. """
4
5from AthenaCommon.Logging import logging
6from AthenaConfiguration.ComponentFactory import CompFactory
7from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
8from ElectronPhotonSelectorTools.EgammaPIDdefs import egammaPID
9
10
11def 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
69def 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
98if __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
109 cfg = ComponentAccumulator()
110 mlog = logging.getLogger("EMPIDBuilderConfigTest")
111 mlog.info("Configuring EMPIDBuilderElectron: ")
112 printProperties(mlog, cfg.popToolsAndMerge(
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()
EMPIDBuilderPhotonCfg(flags, name='EMPIDBuilderPhoton', **kwargs)
EMPIDBuilderElectronCfg(flags, name='EMPIDBuilderElectron', **kwargs)