15def egammaForwardBuilderCfg(flags, name='egammaForwardElectron', **kwargs):
16
17 acc = ComponentAccumulator()
18 extraInputs = []
19
20 if flags.Detector.GeometryITk:
21 kwargs["doTrackMatching"] = True
22 kwargs["doCookieCutting"] = True
23 if flags.Reco.EnableHGTDExtension:
24 if "forwardelectronNNselectors" not in kwargs:
25 LooseFwdElectronSelector_NN = AsgForwardElectronSelectorToolCfg(
26 flags,
27 "LooseForwardNNElectronSelector",
28 "Loose")
29 MediumFwdElectronSelector_NN = AsgForwardElectronSelectorToolCfg(
30 flags,
31 "MediumForwardNNElectronSelector",
32 "Medium")
33 TightFwdElectronSelector_NN = AsgForwardElectronSelectorToolCfg(
34 flags,
35 "TightForwardNNElectronSelector",
36 "Tight")
37
38 kwargs["dofwdDNN"] = True
39 kwargs.setdefault("forwardelectronNNselectors",
40 [LooseFwdElectronSelector_NN.popPrivateTools(),
41 MediumFwdElectronSelector_NN.popPrivateTools(),
42 TightFwdElectronSelector_NN.popPrivateTools()])
43 kwargs.setdefault(
44 "forwardelectronNNselectorResultNames",
45 ["Loose", "Medium", "Tight"])
46 acc.merge(LooseFwdElectronSelector_NN)
47 acc.merge(MediumFwdElectronSelector_NN)
48 acc.merge(TightFwdElectronSelector_NN)
49
50 kwargs["dopTCal"] = True
51 forward_elecpTCalib = AsgForwardElectronCalibrationToolCfg (flags,
52 "forwardelectronNNpTCalib")
53 kwargs.setdefault("forwardelectronNNCalib",forward_elecpTCalib.popPrivateTools())
54 kwargs.setdefault("ExtraInputs", extraInputs)
55 kwargs.setdefault("TrackMatchBuilderTool", acc.popToolsAndMerge(EMTrackMatchBuilderCfg(flags)))
56
57
58 if "forwardelectronIsEMselectors" not in kwargs:
59 LooseFwdElectronSelector = AsgForwardElectronIsEMSelectorCfg(
60 flags,
61 "LooseForwardElectronSelector",
62 egammaPID.ForwardElectronIDLoose)
63 MediumFwdElectronSelector = AsgForwardElectronIsEMSelectorCfg(
64 flags,
65 "MediumForwardElectronSelector",
66 egammaPID.ForwardElectronIDMedium)
67 TightFwdElectronSelector = AsgForwardElectronIsEMSelectorCfg(
68 flags,
69 "TightForwardElectronSelector",
70 egammaPID.ForwardElectronIDTight)
71
72 kwargs.setdefault("forwardelectronIsEMselectors",
73 [LooseFwdElectronSelector.popPrivateTools(),
74 MediumFwdElectronSelector.popPrivateTools(),
75 TightFwdElectronSelector.popPrivateTools()])
76 kwargs.setdefault(
77 "forwardelectronIsEMselectorResultNames",
78 ["Loose", "Medium", "Tight"])
79
80 acc.merge(LooseFwdElectronSelector)
81 acc.merge(MediumFwdElectronSelector)
82 acc.merge(TightFwdElectronSelector)
83
84
85
86 if "ObjectQualityTool" not in kwargs and not flags.Common.isOnline:
87 egOQ = egammaOQFlagsBuilderCfg(flags)
88 kwargs["ObjectQualityTool"] = egOQ.popPrivateTools()
89 acc.merge(egOQ)
90
91 if flags.Egamma.doForwardCalib:
92 kwargs["doEnergyCal"] = True
93 kwargs["PrimaryVerticesContainerKey"] = "PrimaryVertices"
94 kwargs["EventInfoKey"] = "EventInfo"
95 from egammaMVACalib.egammaMVACalibConfig import egammaMVASvcCfg
96 kwargs["MVACalibSvc"] = acc.getPrimaryAndMerge(egammaMVASvcCfg(flags))
97
98 kwargs.setdefault("ElectronOutputName",
99 flags.Egamma.Keys.Output.ForwardElectrons)
100 kwargs.setdefault("TopoClusterName",
101 flags.Egamma.Keys.Internal.ForwardTopoClusters)
102 kwargs.setdefault("ClusterContainerName",
103 flags.Egamma.Keys.Output.ForwardClusters)
104 fwdAlg = CompFactory.egammaForwardBuilder(name, **kwargs)
105
106 acc.addEventAlgo(fwdAlg)
107 return acc
108
109