ATLAS Offline Software
Loading...
Searching...
No Matches
TrigEgammaFactoriesCfg.py
Go to the documentation of this file.
1# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2
3from AthenaConfiguration.ComponentFactory import CompFactory
4from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
5from TriggerMenuMT.HLT.Egamma.TrigEgammaKeys import getTrigEgammaKeys
6
7def TrigEgammaRecCfg(flags, name= "trigEgammaRec"):
8 acc = ComponentAccumulator()
9 TrigEgammaKeys = getTrigEgammaKeys(flags)
10 egammaRec = CompFactory.egammaRecBuilder( name = name,
11 InputClusterContainerName = TrigEgammaKeys.precisionCaloTopoCollection, # input,
12 egammaRecContainer = TrigEgammaKeys.precisionCaloEgammaRecCollection, # output,
13 doTrackMatching = False,
14 # Builder tools
15 TrackMatchBuilderTool = None, # Don't want to use these for trigger....
16 ConversionBuilderTool = None,
17 doConversions = False)
18 acc.addEventAlgo(egammaRec)
19 return acc
20
21def TrigEgammaSuperClusterBuilderCfg(flags, name, calibrationType, superClusterCollectionName, superegammaRecCollectionName):
22 acc = ComponentAccumulator()
23 TrigEgammaKeys = getTrigEgammaKeys(flags)
24 from egammaTools.egammaSwToolConfig import egammaSwToolCfg
25 from egammaMVACalib.egammaMVACalibConfig import egammaMVASvcCfg
26 trigMVAfolder = flags.Trigger.egamma.Calib.precCaloMVAVersion
27 TrigEgammaSuperClusterBuilder = CompFactory.egammaSuperClusterBuilder(
28 name = name,
29 InputEgammaRecContainerName = TrigEgammaKeys.precisionCaloEgammaRecCollection,
30 SuperClusterCollectionName = superClusterCollectionName,
31 OutputEgammaRecContainerKey = superegammaRecCollectionName, # output,
32 ClusterCorrectionTool = acc.popToolsAndMerge(egammaSwToolCfg(flags)),
33 MVACalibSvc = acc.getPrimaryAndMerge(egammaMVASvcCfg(flags,name="trigPrecCaloEgammaMVASvc",folder = trigMVAfolder)),
34 CalibrationType = calibrationType,
35 EtThresholdCut = 1000,
36 LinkToConstituents = False)
37 acc.addEventAlgo(TrigEgammaSuperClusterBuilder)
38 return acc
39
41 acc = ComponentAccumulator()
42 from TriggerMenuMT.HLT.CommonSequences.FullScanDefs import em_clusters
43 name = "TrigCaloClustersInConeToolHI" if ion else "TrigCaloClustersInConeTool"
44 tool = CompFactory.xAOD.CaloClustersInConeTool(name = name,
45 CaloClusterLocation = em_clusters) # FS topo calo clusters
46 acc.setPrivateTools(tool)
47 return acc
48
50 acc = ComponentAccumulator()
51 tool = CompFactory.CP.IsolationCorrectionTool(name = "TrigLeakageCorrTool")
52 acc.setPrivateTools(tool)
53 return acc
54
55def CaloFillRectangularClusterCfg(flags, **kwargs):
56 result = ComponentAccumulator()
57 kwargs.setdefault("eta_size", 5)
58 kwargs.setdefault("phi_size", 7)
59 kwargs.setdefault("cells_name",'CaloCells')
60 result.setPrivateTools(CompFactory.CaloFillRectangularCluster(**kwargs))
61 return result
62
64 acc = ComponentAccumulator()
65 name = "TrigCaloIsolationToolHI"
66 from CaloIdentifier import SUBCALO
67 tool = CompFactory.xAOD.CaloIsolationTool(name = name,
68 CaloFillRectangularClusterTool = acc.popToolsAndMerge(CaloFillRectangularClusterCfg(flags,name="trigegamma_CaloFillRectangularCluster_HI")),
69 ClustersInConeTool = acc.popToolsAndMerge(TrigCaloClustersInConeToolCfg(flags,ion=True)),
70 FlowElementsInConeTool = None,
71 ParticleCaloExtensionTool = None,
72 IsoLeakCorrectionTool = acc.popToolsAndMerge(TrigCaloIsoCorrectionToolCfg(flags)),
73 ParticleCaloCellAssociationTool = None,
74 saveOnlyRequestedCorrections = True,
75 InitializeReadHandles = False,
76 doEnergyDensityCorrection = True,
77 UseEMScale = True,
78 EMCaloNums = [SUBCALO.LAREM],
79 HadCaloNums = [SUBCALO.LARHEC, SUBCALO.TILE])
80 acc.setPrivateTools(tool)
81 return acc
82
84 acc = ComponentAccumulator()
85 name = "TrigCaloIsolationTool"
86 from CaloIdentifier import SUBCALO
87 tool = CompFactory.xAOD.CaloIsolationTool(name = name,
88 CaloFillRectangularClusterTool = acc.popToolsAndMerge(CaloFillRectangularClusterCfg(flags,name="trigegamma_CaloFillRectangularCluster")),
89 ClustersInConeTool = acc.popToolsAndMerge(TrigCaloClustersInConeToolCfg(flags,ion=False)),
90 FlowElementsInConeTool = None,
91 ParticleCaloExtensionTool = None,
92 IsoLeakCorrectionTool = acc.popToolsAndMerge(TrigCaloIsoCorrectionToolCfg(flags)),
93 ParticleCaloCellAssociationTool = None,
94 saveOnlyRequestedCorrections = True,
95 InitializeReadHandles = True,
96 TopoClusterEDCentralContainer = 'TrigIsoEventShape',
97 TopoClusterEDForwardContainer = 'TrigIsoEventShape',
98 EFlowEDCentralContainer = 'TrigIsoEventShape',
99 EFlowEDForwardContainer = 'TrigIsoEventShape',
100 EMCaloNums = [SUBCALO.LAREM],
101 HadCaloNums = [SUBCALO.LARHEC, SUBCALO.TILE])
102 acc.setPrivateTools(tool)
103 return acc
104
105
106def TrigPhotonIsoBuilderCfg(flags, ion = False):
107 acc = ComponentAccumulator()
108 TrigEgammaKeys = getTrigEgammaKeys(flags, ion=ion)
109 if ion:
110 name = 'TrigPhotonIsolationBuilderHI'
111 TrigCaloIsolationTool = TrigCaloIsolationToolCfg_HI(flags)
112 else:
113 name = 'TrigPhotonIsolationBuilder'
114 TrigCaloIsolationTool = TrigCaloIsolationToolCfg(flags)
115
116 from xAODPrimitives.xAODIso import xAODIso as isoPar
117 TrigPhotonIsolationBuilder = CompFactory.IsolationBuilder(name = name,
118 PhotonCollectionContainerName = TrigEgammaKeys.precisionPhotonContainer,
119 CaloCellIsolationTool = None,
120 CaloTopoIsolationTool = acc.popToolsAndMerge(TrigCaloIsolationTool),
121 PFlowIsolationTool = None,
122 TrackIsolationTool = None,
123 PhIsoTypes = [[isoPar.topoetcone20, isoPar.topoetcone30, isoPar.topoetcone40]],
124 PhCorTypes = [[isoPar.core57cells, isoPar.pileupCorrection]],
125 PhCorTypesExtra = [[]],
126 )
127 acc.addEventAlgo(TrigPhotonIsolationBuilder)
128 return acc
129
130
131def TrigEgammaPseudoJetAlgCfg(flags, name='TrigPhotonEgammaPSeudoJetBuilder'):
132 acc = ComponentAccumulator()
133 # This is to run pseudoJetAlgorithm to compute event density over FullScan TopoClusters
134 TrigEgammaPseudoJetAlgBuilder = CompFactory.PseudoJetAlgorithm(name = name,
135 Label = "EMTopo",
136 InputContainer = "HLT_TopoCaloClustersFS",
137 OutputContainer = "PseudoJetTrigEMTopo",
138 SkipNegativeEnergy = True)
139 acc.addEventAlgo(TrigEgammaPseudoJetAlgBuilder)
140 return acc
141
142
143def TrigConfigEventDensityToolCfg( flags, **kwargs ):
144 acc = ComponentAccumulator()
145 kwargs.setdefault("JetAlgorithm", "Kt")
146 kwargs.setdefault("JetRadius", 0.5)
147 kwargs.setdefault("InputContainer", "PseudoJetTrigEMTopo")
148 kwargs.setdefault("AbsRapidityMin",0.0)
149 kwargs.setdefault("AbsRapidityMax",2.0)
150 kwargs.setdefault("AreaDefinition","Voronoi")
151 kwargs.setdefault("VoronoiRfact",0.9)
152 kwargs.setdefault("OutputContainer",'TrigIsoEventShape')
153 acc.setPrivateTools(CompFactory.EventDensityTool(**kwargs))
154 return acc
155
156
157def TrigIsoEventShapeAlgCfg (flags, name = 'TrigPhotonIsoEventShapeAlg'):
158 acc = ComponentAccumulator()
159 TrigIsoEventShapeAlg = CompFactory.EventDensityAthAlg(name = name,
160 EventDensityTool = acc.popToolsAndMerge(TrigConfigEventDensityToolCfg(flags=flags,name="TrigIsoTool")))
161 acc.addEventAlgo(TrigIsoEventShapeAlg)
162 return acc
163
164
165def TrigEgammaFSEventDensitySequenceCfg(flags, name = 'TrigEgammaFSEventDensitySequence'):
166 acc = ComponentAccumulator()
167 from TrigCaloRec.TrigCaloRecConfig import jetmetTopoClusteringCfg
168 acc.merge(jetmetTopoClusteringCfg(flags,
169 RoIs = '') )
170 acc.merge(TrigEgammaPseudoJetAlgCfg(flags))
171 acc.merge(TrigIsoEventShapeAlgCfg(flags))
172 return acc
173
174
TrigEgammaPseudoJetAlgCfg(flags, name='TrigPhotonEgammaPSeudoJetBuilder')
TrigIsoEventShapeAlgCfg(flags, name='TrigPhotonIsoEventShapeAlg')
TrigEgammaSuperClusterBuilderCfg(flags, name, calibrationType, superClusterCollectionName, superegammaRecCollectionName)
TrigEgammaRecCfg(flags, name="trigEgammaRec")
TrigEgammaFSEventDensitySequenceCfg(flags, name='TrigEgammaFSEventDensitySequence')