ATLAS Offline Software
Loading...
Searching...
No Matches
egammaForwardBuilderConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2
3from ElectronPhotonSelectorTools.EgammaPIDdefs import egammaPID
4from egammaTools.EMTrackMatchBuilderConfig import EMTrackMatchBuilderCfg
5from ElectronPhotonSelectorTools.AsgForwardElectronIsEMSelectorsConfig import (
6 AsgForwardElectronIsEMSelectorCfg)
7from AthenaCommon.Logging import logging
8from AthenaConfiguration.ComponentFactory import CompFactory
9from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
10from egammaTools.egammaOQFlagsBuilderConfig import egammaOQFlagsBuilderCfg
11
12
13def egammaForwardBuilderCfg(flags, name='egammaForwardElectron', **kwargs):
14
15 acc = ComponentAccumulator()
16
17 if flags.Detector.GeometryITk:
18 kwargs["doTrackMatching"] = True
19 kwargs["doCookieCutting"] = True
20 kwargs.setdefault("TrackMatchBuilderTool", acc.popToolsAndMerge(EMTrackMatchBuilderCfg(flags)))
21 if "forwardelectronIsEMselectors" not in kwargs:
22 LooseFwdElectronSelector = AsgForwardElectronIsEMSelectorCfg(
23 flags,
24 "LooseForwardElectronSelector",
25 egammaPID.ForwardElectronIDLoose)
26 MediumFwdElectronSelector = AsgForwardElectronIsEMSelectorCfg(
27 flags,
28 "MediumForwardElectronSelector",
29 egammaPID.ForwardElectronIDMedium)
30 TightFwdElectronSelector = AsgForwardElectronIsEMSelectorCfg(
31 flags,
32 "TightForwardElectronSelector",
33 egammaPID.ForwardElectronIDTight)
34
35 kwargs.setdefault("forwardelectronIsEMselectors",
36 [LooseFwdElectronSelector.popPrivateTools(),
37 MediumFwdElectronSelector.popPrivateTools(),
38 TightFwdElectronSelector.popPrivateTools()])
39 kwargs.setdefault(
40 "forwardelectronIsEMselectorResultNames",
41 ["Loose", "Medium", "Tight"])
42
43 acc.merge(LooseFwdElectronSelector)
44 acc.merge(MediumFwdElectronSelector)
45 acc.merge(TightFwdElectronSelector)
46
47 if "ObjectQualityTool" not in kwargs and not flags.Common.isOnline:
48 egOQ = egammaOQFlagsBuilderCfg(flags)
49 kwargs["ObjectQualityTool"] = egOQ.popPrivateTools()
50 acc.merge(egOQ)
51
52 if flags.Egamma.doForwardCalib:
53 kwargs["doEnergyCal"] = True
54 kwargs["PrimaryVerticesContainerKey"] = "PrimaryVertices"
55 kwargs["EventInfoKey"] = "EventInfo"
56 from egammaMVACalib.egammaMVACalibConfig import egammaMVASvcCfg
57 kwargs["MVACalibSvc"] = acc.getPrimaryAndMerge(egammaMVASvcCfg(flags))
58
59 kwargs.setdefault("ElectronOutputName",
60 flags.Egamma.Keys.Output.ForwardElectrons)
61 kwargs.setdefault("TopoClusterName",
62 flags.Egamma.Keys.Internal.ForwardTopoClusters)
63 kwargs.setdefault("ClusterContainerName",
64 flags.Egamma.Keys.Output.ForwardClusters)
65 fwdAlg = CompFactory.egammaForwardBuilder(name, **kwargs)
66
67 acc.addEventAlgo(fwdAlg)
68 return acc
69
70
71if __name__ == "__main__":
72 from AthenaConfiguration.AllConfigFlags import initConfigFlags
73 from AthenaConfiguration.TestDefaults import defaultTestFiles
74 from AthenaConfiguration.ComponentAccumulator import printProperties
75 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
76 flags = initConfigFlags()
77 flags.Input.Files = defaultTestFiles.RDO_RUN2
78 flags.lock()
79
80 acc = MainServicesCfg(flags)
81 mlog = logging.getLogger("egammaForwardBuilderConfigTest")
82 mlog.info("Configuring egammaForwardBuilder: ")
83 acc.merge(egammaForwardBuilderCfg(flags))
84 printProperties(mlog,
85 acc.getEventAlgo("egammaForwardElectron"),
86 nestLevel=1,
87 printDefaults=True)
88 with open("egammaforwardbuilder.pkl", "wb") as f:
89 acc.store(f)
egammaForwardBuilderCfg(flags, name='egammaForwardElectron', **kwargs)