5__doc__ =
"ToolFactories to configure egammaAlgs to be used at the HLT"
8This file defines the factories of the algorithms to be used in an electron trigger sequence in athenaMT
9These are inspired by the offline factories, alhtough modified so they reflect the configuration we need for these algorithms at the HLT.
10Offline configurations are available here:
11 https://gitlab.cern.ch/atlas/athena/blob/master/Reconstruction/egamma/egammaAlgs/python/
16from AthenaConfiguration.ComponentFactory
import CompFactory
17from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
18from AthenaConfiguration.Enums
import BeamType
21 acc = ComponentAccumulator()
22 name=
'TrigEMTrackMatchBuilder'+tag
23 from egammaTrackTools.egammaTrackToolsConfig
import EMExtrapolationToolsCfg
24 emExtrapolatorTools = acc.popToolsAndMerge(EMExtrapolationToolsCfg(flags))
25 builderTool = CompFactory.EMTrackMatchBuilder( name,
26 TrackParticlesName = trackparticles,
27 ExtrapolationTool = emExtrapolatorTools,
30 useCandidateMatch =
True,
32 SecondPassRescale =
True,
33 UseRescaleMetric =
True,
34 isCosmics = flags.Beam.Type
is BeamType.Cosmics)
35 acc.setPrivateTools(builderTool)
40 acc = ComponentAccumulator()
41 name =
'TrigEgammaRecElectron'+tag
42 electronRec = CompFactory.egammaRecBuilder( name,
43 InputClusterContainerName= calocluster,
44 egammaRecContainer= egammaRecContainer,
45 doConversions =
False,
47 acc.addEventAlgo(electronRec)
52 acc = ComponentAccumulator()
53 from egammaTools.egammaSwToolConfig
import egammaSwToolCfg
54 from egammaMVACalib.egammaMVACalibConfig
import egammaMVASvcCfg
55 superClusterBuilder = CompFactory.electronSuperClusterBuilder(
'TrigElectronSuperClusterBuilder'+tag,
56 InputEgammaRecContainerName = InputEgammaRecContainerName,
57 OutputEgammaRecContainerKey = SuperElectronRecCollectionName,
58 ClusterCorrectionTool = acc.popToolsAndMerge(egammaSwToolCfg(flags)),
59 MVACalibSvc = acc.getPrimaryAndMerge(egammaMVASvcCfg(flags)),
60 EtThresholdCut = 1000,
62 LinkToConstituents =
False)
63 acc.addEventAlgo(superClusterBuilder)
69 acc = ComponentAccumulator()
70 from egammaMVACalib.egammaMVACalibConfig
import egammaMVASvcCfg
71 tool = CompFactory.EMClusterTool(
'TrigEMClusterTool_electron'+variant,
72 OutputClusterContainerName = OutputClusterContainerName,
73 MVACalibSvc = acc.getPrimaryAndMerge(egammaMVASvcCfg(flags))
75 acc.setPrivateTools(tool)
79def TrigTopoEgammaElectronCfg(flags, tag, variant, cellsName, InputElectronRecCollectionName, InputPhotonRecCollectionName, ElectronOutputName, PhotonOutputName, OutputClusterContainerName):
80 acc = ComponentAccumulator()
81 from egammaTools.EMShowerBuilderConfig
import EMShowerBuilderCfg
82 builder = CompFactory.xAODEgammaBuilder(name=
'topoEgammaBuilder_TrigElectrons'+tag,
83 InputElectronRecCollectionName = InputElectronRecCollectionName,
84 InputPhotonRecCollectionName = InputPhotonRecCollectionName,
85 ElectronOutputName = ElectronOutputName,
86 PhotonOutputName = PhotonOutputName,
87 DummyElectronOutputName =
"HLT_PrecisionDummyElectron",
88 AmbiguityTool = CompFactory.EGammaAmbiguityTool(),
89 EMClusterTool = acc.popToolsAndMerge(
TrigEMClusterToolCfg(flags,variant,OutputClusterContainerName)),
90 EMShowerTool = acc.popToolsAndMerge(EMShowerBuilderCfg(flags, CellsName=cellsName)),
93 acc.addEventAlgo(builder)
98 from InDetConfig.InDetTrackSelectionToolConfig
import InDetTrackSelectionTool_Loose_Cfg
99 acc = ComponentAccumulator()
101 tpicTool = CompFactory.xAOD.TrackParticlesInConeTool(TrackParticleLocation = trackParticleLocation)
102 tiTool = CompFactory.xAOD.TrackIsolationTool(name=
'TrigTrackIsolationTool'+tag,
103 TrackParticleLocation = trackParticleLocation,
105 TracksInConeTool = tpicTool,
106 TrackSelectionTool = acc.popToolsAndMerge(
107 InDetTrackSelectionTool_Loose_Cfg(flags, maxZ0SinTheta = 3, minPt = 1000)))
108 acc.setPrivateTools(tiTool)
113 acc = ComponentAccumulator()
114 from xAODPrimitives.xAODIso
import xAODIso
as isoPar
115 builder = CompFactory.IsolationBuilder(
116 name =
'TrigElectronIsolationBuilder'+tag,
117 ElectronCollectionContainerName = electronCollectionContainerName,
118 CaloCellIsolationTool =
None,
119 CaloTopoIsolationTool =
None,
120 PFlowIsolationTool =
None,
121 useBremAssoc = useBremAssoc,
123 ElIsoTypes = [[isoPar.ptcone30,isoPar.ptcone20]],
124 ElCorTypes = [[isoPar.coreTrackPtr]],
125 ElCorTypesExtra = [[]],
127 acc.addEventAlgo(builder)
131 acc = ComponentAccumulator()
132 name =
'PrecisionElectronTopoMonitoring'+tag
133 from TrigEgammaMonitoring.egammaMonitorPrecisionConfig
import egammaMonitorPrecisionCfg
134 monTool = egammaMonitorPrecisionCfg(flags, name)
135 PrecisionElectronTopoMonitor = CompFactory.egammaMonitorElectronAlgorithm(
137 ElectronKey = electronKey,
138 IsoVarKeys = isoVarKeys,
140 acc.addEventAlgo(PrecisionElectronTopoMonitor)
144 acc = ComponentAccumulator()
145 name =
'PrecisionElectronSuperClusterMonitoring'+tag
146 from TrigEgammaMonitoring.egammaMonitorPrecisionConfig
import egammaMonitorSuperClusterCfg
147 monTool = egammaMonitorSuperClusterCfg(flags, name)
148 PrecisionElectronSuperClusterMonitor = CompFactory.egammaMonitorSuperClusterAlgorithm(
150 InputEgammaRecContainerName = inputEgammaRecContainerName,
152 acc.addEventAlgo(PrecisionElectronSuperClusterMonitor)
PrecisionElectronTopoMonitorCfg(flags, tag, electronKey, isoVarKeys)
TrigEMTrackMatchBuilderToolCfg(flags, tag, trackparticles)
TrigTopoEgammaElectronCfg(flags, tag, variant, cellsName, InputElectronRecCollectionName, InputPhotonRecCollectionName, ElectronOutputName, PhotonOutputName, OutputClusterContainerName)
TrigElectronSuperClusterBuilderCfg(flags, tag, InputEgammaRecContainerName, SuperElectronRecCollectionName, trackparticles)
TrigTrackIsolationToolCfg(flags, tag, trackParticleLocation)
TrigEgammaRecElectronCfg(flags, tag, trackparticles, calocluster, egammaRecContainer)
PrecisionElectronSuperClusterMonitorCfg(flags, tag, inputEgammaRecContainerName)
TrigElectronIsoBuilderCfg(flags, tag, TrackParticleLocation, electronCollectionContainerName, useBremAssoc)
TrigEMClusterToolCfg(flags, variant, OutputClusterContainerName)