ATLAS Offline Software
Loading...
Searching...
No Matches
egammaMVACalibConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
2
3from AthenaCommon.Logging import logging
4from AthenaConfiguration.ComponentFactory import CompFactory
5from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
6from xAODEgamma.xAODEgammaParameters import xAOD
7
8
9def egammaMVAToolCfg(flags, **kwargs):
10 acc = ComponentAccumulator()
11 acc.setPrivateTools(CompFactory.egammaMVACalibTool(**kwargs))
12 return acc
13
14def egammaTransformerToolCfg(flags, **kwargs):
15 acc = ComponentAccumulator()
16 from egammaAlgs.egammaAODFixesConfig import runAODFix
17 _, fixes = runAODFix(flags)
18 # cluster AOD fix done, do not try to recover. If HI, no timing cut, so no fix here
19 if ('egClusterL2_3Fix' in fixes) or flags.Reco.EnableHI:
20 kwargs['egammaCellRecoveryTool'] = None
21 kwargs['useFixForMissingCells'] = False
22 acc.setPrivateTools(CompFactory.egammaTransformerCalibTool(**kwargs))
23 return acc
24
25def egammaMVASvcCfg(flags, name="egammaMVASvc", **kwargs):
26
27 acc = ComponentAccumulator()
28
29 kwargs.setdefault("folder", flags.Egamma.Calib.MVAVersion)
30
31 if "ElectronTool" not in kwargs:
32 kwargs["ElectronTool"] = acc.popToolsAndMerge(
34 flags,
35 name="electronMVATool",
36 ParticleType=xAOD.EgammaParameters.electron,
37 folder=kwargs['folder'])
38 )
39
40 if flags.Egamma.doForwardCalib and "FwdElectronTool" not in kwargs:
41 kwargs["FwdElectronTool"] = acc.popToolsAndMerge(
43 flags,
44 name="fwdelectronMVATool",
45 ParticleType=xAOD.EgammaParameters.forwardelectron,
46 ShiftType=0,
47 folder=kwargs['folder'])
48 )
49
50 if "UnconvertedPhotonTool" not in kwargs:
51 kwargs["UnconvertedPhotonTool"] = acc.popToolsAndMerge(
53 flags,
54 name="unconvertedPhotonMVATool",
55 ParticleType=xAOD.EgammaParameters.unconvertedPhoton,
56 folder=kwargs['folder'])
57 )
58
59 if "ConvertedPhotonTool" not in kwargs:
60 kwargs["ConvertedPhotonTool"] = acc.popToolsAndMerge(
62 flags,
63 name="convertedPhotonMVATool",
64 ParticleType=xAOD.EgammaParameters.convertedPhoton,
65 folder=kwargs['folder'])
66 )
67
68 acc.addService(
69 CompFactory.egammaMVASvc(
70 name=name,
71 **kwargs), primary=True)
72 return acc
73
74def egammaTransformerSvcCfg(flags, name="egammaTransformerSvc", **kwargs):
75
76 acc = ComponentAccumulator()
77
78 kwargs.setdefault("folder", flags.Egamma.Calib.TransformerVersion)
79 if "ElectronTool" not in kwargs:
80 kwargs["ElectronTool"] = acc.popToolsAndMerge(
82 flags,
83 name="electronTransformerTool",
84 ParticleType=xAOD.EgammaParameters.electron,
85 folder=kwargs['folder'],
86 isMC = flags.Input.isMC),
87 )
88
89 if "UnconvertedPhotonTool" not in kwargs:
90 kwargs["UnconvertedPhotonTool"] = acc.popToolsAndMerge(
92 flags,
93 name="unconvertedPhotonTransformerTool",
94 ParticleType=xAOD.EgammaParameters.unconvertedPhoton,
95 folder=kwargs['folder'],
96 isMC = flags.Input.isMC),
97 )
98
99 if "ConvertedPhotonTool" not in kwargs:
100 kwargs["ConvertedPhotonTool"] = acc.popToolsAndMerge(
102 flags,
103 name="convertedPhotonTransformerTool",
104 ParticleType=xAOD.EgammaParameters.convertedPhoton,
105 folder=kwargs['folder'],
106 isMC = flags.Input.isMC),
107 )
108
109 kwargs['RemoveTRTConvBarrel'] = 1
110 acc.addService(
111 CompFactory.egammaMVASvc(
112 name=name,
113 **kwargs), primary=True)
114 return acc
115
116if __name__ == "__main__":
117
118 from AthenaConfiguration.AllConfigFlags import initConfigFlags
119 from AthenaConfiguration.ComponentAccumulator import printProperties
120 from AthenaConfiguration.TestDefaults import defaultTestFiles
121 flags = initConfigFlags()
122 flags.Input.Files = defaultTestFiles.RDO_RUN2
123 flags.fillFromArgs()
124 flags.lock()
125
126 cfg = ComponentAccumulator()
127 mlog = logging.getLogger("egammaMVASvcConfigTest")
128 mlog.info("Configuring egammaMVASvc :")
129 printProperties(mlog, cfg.getPrimaryAndMerge(
130 egammaMVASvcCfg(flags)),
131 nestLevel=1,
132 printDefaults=True)
133 printProperties(mlog, cfg.getPrimaryAndMerge(
135 nestLevel=1,
136 printDefaults=True)
137 cfg.printConfig()
138
139 f = open("egmvatools.pkl", "wb")
140 cfg.store(f)
141 f.close()
egammaMVASvcCfg(flags, name="egammaMVASvc", **kwargs)
egammaTransformerToolCfg(flags, **kwargs)
egammaTransformerSvcCfg(flags, name="egammaTransformerSvc", **kwargs)