ATLAS Offline Software
egammaForwardBuilder.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "egammaForwardBuilder.h"
15 
18 #include "xAODEgamma/Electron.h"
19 
21 #include "PATCore/AcceptData.h"
22 
23 #include <algorithm>
24 #include <cmath>
25 
26 namespace {
27  constexpr float cellEtaSize = 0.1;
28  constexpr float cellPhiSize = 0.1;
29 
30  template <typename... T>
31  void copyMoments(const xAOD::CaloCluster& src,
32  std::unique_ptr<xAOD::CaloCluster>& dest,
33  T... momentIds) {
34  for (const auto& momentId : {momentIds...}) {
35  double moment {};
36  src.retrieveMoment(momentId, moment);
37  dest->insertMoment(momentId, moment);
38  }
39  }
40 }
41 
43  ISvcLocator* pSvcLocator)
44  : AthReentrantAlgorithm(name, pSvcLocator)
45 {}
46 
48 {
49  m_maxDelPhi = m_maxDelPhiCells * cellPhiSize * 0.5;
50  m_maxDelEta = m_maxDelEtaCells * cellEtaSize * 0.5;
51  m_maxDelR2 = m_maxDelR * m_maxDelR; // Square now to avoid a slow sqrt later.
52 
53  // The data handle keys.
60 
61  // Retrieve object quality tool.
62  if (!m_objectQualityTool.empty()) {
63  ATH_CHECK(m_objectQualityTool.retrieve());
64  }
65 
66  else {
67  m_objectQualityTool.disable();
68  }
69 
71 
72  if (
75  ) {
77  "Number of selectors doesn't match number of given fwd-electron selector names"
78  );
79 
80  return StatusCode::FAILURE;
81  }
82 
83  // Retrieve track match builder.
85 
86  ATH_MSG_DEBUG("Initialization completed successfully");
87 
88  return StatusCode::SUCCESS;
89 }
90 
92 {
93 
94  ATH_MSG_INFO("====> Forward Egamma Statistics =============");
95  ATH_MSG_INFO(" All Clusters " << m_AllClusters);
96  ATH_MSG_INFO(" Matched Clusters " << m_MatchedClusters);
97  ATH_MSG_INFO("=============================================");
98 
99  return StatusCode::SUCCESS;
100 }
101 
102 StatusCode egammaForwardBuilder::execute(const EventContext& ctx) const
103 {
104  // Create an egamma container and register it.
106  ATH_CHECK(xaodFrwd.record(
107  std::make_unique<xAOD::ElectronContainer>(),
108  std::make_unique<xAOD::ElectronAuxContainer>())
109  );
110 
111  // Create the relevant cluster output and register it.
114  ctx
115  );
116 
118  SG::WriteHandle<CaloClusterCellLinkContainer> outClusterContainerCellLink(
120  ctx
121  );
122 
123  ATH_CHECK(outClusterContainerCellLink.record(
124  std::make_unique<CaloClusterCellLinkContainer>())
125  );
126 
127  // Topo cluster container.
129 
130  // Check is only used for serial running, remove when MT scheduler used.
131  ATH_CHECK(inputClusters.isValid());
132 
133  // Calorimeter description.
134  SG::ReadCondHandle<CaloDetDescrManager> caloDetDescrMgrHandle{
136  };
137  ATH_CHECK(caloDetDescrMgrHandle.isValid());
138  const CaloDetDescrManager* calodetdescrmgr = *caloDetDescrMgrHandle;
139 
140  static const SG::AuxElement::Accessor<
141  std::vector<ElementLink<xAOD::CaloClusterContainer>>
142  > caloClusterLinks("constituentClusterLinks");
143 
144  // Prepare to create clusters.
145  EgammaRecContainer egammaRecsFwd;
146  size_t origClusterIndex = 0;
147 
148  // Loop over input cluster container and create egRecs to store the electrons.
149  for (const xAOD::CaloCluster* cluster : *inputClusters) {
150 
151  // Create links back to the original clusters.
152  std::vector<ElementLink<xAOD::CaloClusterContainer>> constituentLinks;
153 
154  // The constituent links should contain a CaloCal cluster. When not running
155  // in ITk mode this is the default for the forward clusters used by egamma
156  // so no sister link is needed to get the CaloCal. When running in ITk mode
157  // the clusters used are CaloTopoClusters so need to access the sister
158  // cluster to maintain consistency.
159  if (m_doTrackMatching) {
161  cluster->getSisterClusterLink();
162 
163  if (sisterCluster) {
164  constituentLinks.push_back(sisterCluster);
165  } else {
166  ATH_MSG_WARNING("No sister Link available");
167  }
168  } else {
169  constituentLinks.emplace_back(*inputClusters, origClusterIndex, ctx);
170  }
171 
172  const DataLink<CaloCellContainer>& cellCont =
173  cluster->getCellLinks()->getCellContainerLink();
174 
175  // Create the new cluster.
176  std::unique_ptr<xAOD::CaloCluster> newCluster =
178  cookieCut(*cluster, *calodetdescrmgr, cellCont) :
179  std::make_unique<xAOD::CaloCluster>(*cluster);
180 
181  if (!newCluster) {
182  continue;
183  }
184 
185  caloClusterLinks(*newCluster) = constituentLinks;
186  outClusterContainer->push_back(std::move(newCluster));
187 
188  size_t index = outClusterContainer->size() - 1;
189  const ElementLink<xAOD::CaloClusterContainer> clusterLink(*outClusterContainer, index, ctx);
190  const std::vector<ElementLink<xAOD::CaloClusterContainer>> clusterLinkVector{clusterLink};
191 
192  // Now create the egamma Rec
193  egammaRecsFwd.push_back(std::make_unique<egammaRec>(clusterLinkVector));
194 
195  ++origClusterIndex;
196  }
197 
198  // Add track-cluster matching information if requested.
199  if (m_doTrackMatching) {
200  ATH_CHECK(m_trackMatchBuilder->executeRec(ctx, &egammaRecsFwd));
201  }
202 
203  auto buff_AllClusters = m_AllClusters.buffer();
204  auto buff_MatchedClusters = m_MatchedClusters.buffer();
205 
206  //Loop over the egamma Rec creating electrons
207  for (const egammaRec* egRec : egammaRecsFwd) {
208  if (!egRec) {
209  return StatusCode::FAILURE;
210  }
211 
212  ++buff_AllClusters;
213 
214  if (m_doTrackMatching && egRec->getNumberOfTrackParticles() == 0) {
215  // Later we may want to use these for so called forward photons.
216  ATH_MSG_DEBUG("EgammaRec without track particle");
217  continue;
218  }
219 
220  //common part
221  xAOD::Electron* el = xaodFrwd->push_back(std::make_unique<xAOD::Electron>());
223  el->setCaloClusterLinks(egRec->caloClusterElementLinks());
224 
225  // from here one, we need both track matching and
226  // having tracks .
227  if (m_doTrackMatching) {
228 
229  ++buff_MatchedClusters;
230  el->setTrackParticleLinks(egRec->trackParticleElementLinks());
231 
232  const xAOD::TrackParticle* trackParticle = el->trackParticle();
233  if (trackParticle) {
234  el->setCharge(trackParticle->charge());
235  } else {
236  ATH_MSG_WARNING("Forward electron without track particle, whereas"
237  " corresponding egammaRec has at least one");
238  }
239 
240  // Set DeltaEta, DeltaPhi, DeltaPhiRescaled.
241  el->setTrackCaloMatchValues(
242  egRec->deltaEta(),
243  egRec->deltaPhi(),
244  egRec->deltaPhiRescaled(),
245  egRec->deltaPhiLast()
246  );
247  }
248 
251 
252  // Apply the Forward Electron selectors.
253  for (size_t i = 0; i < m_forwardElectronIsEMSelectors.size(); ++i) {
256 
257  // Save the bool result.
258  const asg::AcceptData accept = selector->accept(ctx, el);
259  el->setPassSelection(static_cast<bool>(accept), name);
260 
261  // Save the isem.
262  el->setSelectionisEM(accept.getCutResultInverted(), "isEM" + name);
263  }
264 
265  }//end of loop over egammaRecs
266 
268  ctx,
269  outClusterContainer,
270  outClusterContainerCellLink);
271 
272  return StatusCode::SUCCESS;
273 }
274 
277  const EventContext& ctx,
279 ) const {
280  // Protection in case tool is not available return success as algorithm can run without it.
281  if (!m_objectQualityTool.isEnabled()) { return StatusCode::SUCCESS; }
282 
283  return m_objectQualityTool->execute(ctx,*eg);
284 }
285 
288 {
289  if (!m_doTrackMatching) {
290  m_trackMatchBuilder.disable();
291  return StatusCode::SUCCESS;
292  }
293 
294  if (m_trackMatchBuilder.empty()) {
295  ATH_MSG_ERROR("EMTrackMatchBuilder is empty, but track matching is enabled");
296  return StatusCode::FAILURE;
297  }
298 
299  if (m_trackMatchBuilder.retrieve().isFailure()) {
300  ATH_MSG_ERROR("Unable to retrieve " << m_trackMatchBuilder);
301  return StatusCode::FAILURE;
302  }
303 
304  return StatusCode::SUCCESS;
305 }
306 
307 std::unique_ptr<xAOD::CaloCluster> egammaForwardBuilder::cookieCut(
308  const xAOD::CaloCluster& cluster,
309  const CaloDetDescrManager& mgr,
310  const DataLink<CaloCellContainer>& cellCont
311 ) const {
312  if (!cluster.hasSampling(CaloSampling::EME2) &&
313  !cluster.hasSampling(CaloSampling::FCAL0)) {
314  return nullptr;
315  }
316 
317  CookieCutterHelpers::CentralPosition cp0({&cluster}, mgr);
318 
319  const bool isEC = cp0.emaxEC >= cp0.emaxF;
320  const float eta = isEC ? cp0.etaEC : cp0.etaF;
321  const float phi = isEC ? cp0.phiEC : cp0.phiF;
322 
323  auto newCluster = CaloClusterStoreHelper::makeCluster(cellCont);
324 
325 
326  if (!newCluster) {
327  ATH_MSG_ERROR("CaloClusterStoreHelper::makeCluster failed.");
328  return nullptr;
329  }
330 
331  CaloClusterCellLink* newCellLinks = newCluster->getOwnCellLinks();
332  copyMoments(cluster,
333  newCluster,
342 
343  const CaloClusterCellLink* cellLinks = cluster.getCellLinks();
344  CaloClusterCellLink::const_iterator cellItr = cellLinks->begin();
345  CaloClusterCellLink::const_iterator cellEnd = cellLinks->end();
346 
347  for (; cellItr != cellEnd; ++cellItr) {
348  const float deltaEta = std::abs(eta - cellItr->eta());
349  const float deltaPhi = std::abs(phi - cellItr->phi());
350 
351  const float deltaEta2 = deltaEta * deltaEta;
352  const float deltaPhi2 = deltaPhi * deltaPhi;
353 
354  const bool excludeCell = isEC ?
357 
358  if (!excludeCell) {
359  newCellLinks->addCell(cellItr.index(), cellItr.weight());
360  }
361  }
362 
363  CaloClusterKineHelper::calculateKine(newCluster.get(), true, true);
364 
365  return newCluster;
366 }
367 
CaloClusterStoreHelper::makeCluster
static std::unique_ptr< xAOD::CaloCluster > makeCluster(const CaloCellContainer *cellCont)
Creates a valid CaloCluster with a private Aux-Store and CellLink container.
Definition: CaloClusterStoreHelper.cxx:13
xAOD::CaloCluster_v1::SECOND_R
@ SECOND_R
Second Moment in .
Definition: CaloCluster_v1.h:123
egammaForwardBuilder::m_maxDelEta
float m_maxDelEta
Definition: egammaForwardBuilder.h:183
CookieCutterHelpers::CentralPosition
Find the reference position (eta, phi) relative to which cells are restricted.
Definition: CookieCutterHelpers.h:19
CaloClusterKineHelper.h
CaloClusterStoreHelper::finalizeClusters
static StatusCode finalizeClusters(SG::WriteHandle< CaloClusterCellLinkContainer > &h, xAOD::CaloClusterContainer *pClusterColl)
Finalize clusters (move CaloClusterCellLink to a separate container).
Definition: CaloClusterStoreHelper.cxx:64
CaloCell::phi
virtual double phi() const override final
get phi (through CaloDetDescrElement)
Definition: CaloCell.h:359
IAsgForwardElectronIsEMSelector.h
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
CaloClusterStoreHelper::AddContainerWriteHandle
static StatusCode AddContainerWriteHandle(SG::WriteHandle< xAOD::CaloClusterContainer > &clusColl)
Creates a new xAOD::CaloClusterContainer in the given WriteHandle + CaloClusterAuxContainer and recor...
Definition: CaloClusterStoreHelper.cxx:53
ParticleTest.eg
eg
Definition: ParticleTest.py:29
SG::Accessor
Helper class to provide type-safe access to aux data.
Definition: Control/AthContainers/AthContainers/Accessor.h:66
WriteCellNoiseToCool.src
src
Definition: WriteCellNoiseToCool.py:513
xAOD::TrackParticle_v1::charge
float charge() const
Returns the charge.
Definition: TrackParticle_v1.cxx:150
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
index
Definition: index.py:1
egammaForwardBuilder::m_forwardElectronIsEMSelectors
ToolHandleArray< IAsgForwardElectronIsEMSelector > m_forwardElectronIsEMSelectors
Handle to the selectors.
Definition: egammaForwardBuilder.h:189
xAOD::deltaPhi
setSAddress setEtaMS setDirPhiMS setDirZMS setBarrelRadius setEndcapAlpha setEndcapRadius setInterceptInner setEtaMap setEtaBin setIsTgcFailure setDeltaPt deltaPhi
Definition: L2StandAloneMuon_v1.cxx:160
egammaForwardBuilder::egammaForwardBuilder
egammaForwardBuilder(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
Definition: egammaForwardBuilder.cxx:42
CutsMETMaker::accept
StatusCode accept(const xAOD::Muon *mu)
Definition: CutsMETMaker.cxx:18
egammaForwardBuilder::m_AllClusters
Gaudi::Accumulators::Counter m_AllClusters
Definition: egammaForwardBuilder.h:180
xAOD::EgammaParameters::deltaEta2
@ deltaEta2
difference between the cluster eta (second sampling) and the eta of the track extrapolated to the sec...
Definition: EgammaEnums.h:187
egammaForwardBuilder::m_doCookieCutting
Gaudi::Property< bool > m_doCookieCutting
Private member flag to do cookie cutting.
Definition: egammaForwardBuilder.h:149
xAOD::CaloCluster_v1::CENTER_LAMBDA
@ CENTER_LAMBDA
Shower depth at Cluster Centroid.
Definition: CaloCluster_v1.h:136
perfmonmt-printer.dest
dest
Definition: perfmonmt-printer.py:189
egammaForwardBuilder::RetrieveEMTrackMatchBuilder
StatusCode RetrieveEMTrackMatchBuilder()
Definition: egammaForwardBuilder.cxx:287
xAOD::Egamma_v1
Definition: Egamma_v1.h:56
egammaForwardBuilder::ExecObjectQualityTool
StatusCode ExecObjectQualityTool(const EventContext &ctx, xAOD::Egamma *eg) const
Definition: egammaForwardBuilder.cxx:276
xAOD::EgammaParameters::AuthorFwdElectron
const uint16_t AuthorFwdElectron
Electron reconstructed by the Forward cluster-based algorithm.
Definition: EgammaDefs.h:30
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
egammaForwardBuilder::m_forwardElectronIsEMSelectorResultNames
Gaudi::Property< std::vector< std::string > > m_forwardElectronIsEMSelectorResultNames
Definition: egammaForwardBuilder.h:196
CaloClusterAuxContainer.h
xAOD::CaloCluster_v1::ENG_FRAC_MAX
@ ENG_FRAC_MAX
Energy fraction of hottest cell.
Definition: CaloCluster_v1.h:140
CaloDetDescrManager.h
Definition of CaloDetDescrManager.
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:83
xAOD::CaloCluster_v1::SECOND_LAMBDA
@ SECOND_LAMBDA
Second Moment in .
Definition: CaloCluster_v1.h:124
egammaForwardBuilder::m_maxDelR
Gaudi::Property< float > m_maxDelR
Size of cone to cookie cut on FCal.
Definition: egammaForwardBuilder.h:173
BchCleanup.mgr
mgr
Definition: BchCleanup.py:294
egammaForwardBuilder::m_outClusterContainerCellLinkKey
SG::WriteHandleKey< CaloClusterCellLinkContainer > m_outClusterContainerCellLinkKey
Output cluster container cell links: name taken from containter name.
Definition: egammaForwardBuilder.h:138
xAOD::CaloCluster_v1::SECOND_ENG_DENS
@ SECOND_ENG_DENS
Second Moment in E/V.
Definition: CaloCluster_v1.h:144
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:59
egammaForwardBuilder::initialize
virtual StatusCode initialize() override final
Initialize method.
Definition: egammaForwardBuilder.cxx:47
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ElectronContainer.h
P4Helpers::deltaEta
double deltaEta(const I4Momentum &p1, const I4Momentum &p2)
Computes efficiently .
Definition: P4Helpers.h:53
egammaForwardBuilder::execute
virtual StatusCode execute(const EventContext &ctx) const override final
Execute method.
Definition: egammaForwardBuilder.cxx:102
lumiFormat.i
int i
Definition: lumiFormat.py:92
CaloCluster.h
ElectronAuxContainer.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
egammaForwardBuilder::m_doTrackMatching
Gaudi::Property< bool > m_doTrackMatching
Private member flag to do the track matching.
Definition: egammaForwardBuilder.h:141
egammaForwardBuilder::m_maxDelPhiCells
Gaudi::Property< int > m_maxDelPhiCells
Size of maximum search window in phi.
Definition: egammaForwardBuilder.h:165
plotIsoValidation.el
el
Definition: plotIsoValidation.py:197
EMFourMomBuilder.h
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
AcceptData.h
xAOD::CaloCluster_v1::getCellLinks
const CaloClusterCellLink * getCellLinks() const
Get a pointer to the CaloClusterCellLink object (const version)
Definition: CaloCluster_v1.cxx:905
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
egammaForwardBuilder::m_outClusterContainerKey
SG::WriteHandleKey< xAOD::CaloClusterContainer > m_outClusterContainerKey
Output cluster container.
Definition: egammaForwardBuilder.h:130
egammaForwardBuilder.h
egammaForwardBuilder::finalize
virtual StatusCode finalize() override final
Finalize method.
Definition: egammaForwardBuilder.cxx:91
EMFourMomBuilder::calculate
void calculate(xAOD::Electron &electron)
Definition: EMFourMomBuilder.cxx:68
CookieCutterHelpers.h
egammaForwardBuilder::m_trackMatchBuilder
ToolHandle< IEMTrackMatchBuilder > m_trackMatchBuilder
Tool to perform track-cluster matching.
Definition: egammaForwardBuilder.h:98
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
IegammaBaseTool.h
xAOD::EgammaParameters::deltaPhi2
@ deltaPhi2
difference between the cluster phi (second sampling) and the phi of the track extrapolated to the sec...
Definition: EgammaEnums.h:204
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
egammaForwardBuilder::cookieCut
std::unique_ptr< xAOD::CaloCluster > cookieCut(const xAOD::CaloCluster &cluster, const CaloDetDescrManager &mgr, const DataLink< CaloCellContainer > &cellCont) const
Remove cells that are too far from the center of mass.
Definition: egammaForwardBuilder.cxx:307
xAOD::Electron_v1
Definition: Electron_v1.h:34
CaloClusterStoreHelper.h
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
python.selector.AtlRunQuerySelectorLhcOlc.selector
selector
Definition: AtlRunQuerySelectorLhcOlc.py:611
CaloDetDescrManager
This class provides the client interface for accessing the detector description information common to...
Definition: CaloDetDescrManager.h:473
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
xAOD::CaloCluster_v1::SIGNIFICANCE
@ SIGNIFICANCE
Cluster significance.
Definition: CaloCluster_v1.h:157
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
egammaForwardBuilder::m_topoClusterKey
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_topoClusterKey
Input topo cluster type.
Definition: egammaForwardBuilder.h:106
CaloClusterContainer.h
CaloClusterKineHelper::calculateKine
static void calculateKine(xAOD::CaloCluster *clu, const bool useweight=true, const bool updateLayers=true, const bool useGPUCriteria=false)
Helper class to calculate cluster kinematics based on cells.
Definition: CaloClusterKineHelper.cxx:223
xAOD::CaloCluster_v1::LATERAL
@ LATERAL
Normalized lateral moment.
Definition: CaloCluster_v1.h:137
egammaRec
Definition: egammaRec.h:31
Electron.h
egammaForwardBuilder::m_caloDetDescrMgrKey
SG::ReadCondHandleKey< CaloDetDescrManager > m_caloDetDescrMgrKey
Calorimeter description.
Definition: egammaForwardBuilder.h:114
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
xAOD::CaloCluster_v1::hasSampling
bool hasSampling(const CaloSample s) const
Checks if certain smapling contributes to cluster.
Definition: CaloCluster_v1.h:890
asg::AcceptData
Definition: AcceptData.h:30
xAOD::CaloCluster_v1::LONGITUDINAL
@ LONGITUDINAL
Normalized longitudinal moment.
Definition: CaloCluster_v1.h:138
CaloCell_ID_FCS::FCAL0
@ FCAL0
Definition: FastCaloSim_CaloCell_ID.h:40
egammaForwardBuilder::m_MatchedClusters
Gaudi::Accumulators::Counter m_MatchedClusters
Definition: egammaForwardBuilder.h:181
egammaForwardBuilder::m_maxDelPhi
float m_maxDelPhi
Definition: egammaForwardBuilder.h:184
egammaForwardBuilder::m_objectQualityTool
ToolHandle< IegammaOQFlagsBuilder > m_objectQualityTool
Tool to perform object quality.
Definition: egammaForwardBuilder.h:90
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
CookieCutterHelpers::CentralPosition::emaxEC
float emaxEC
Definition: CookieCutterHelpers.h:25
egammaForwardBuilder::m_maxDelR2
float m_maxDelR2
Definition: egammaForwardBuilder.h:185
constants.EME2
int EME2
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:56
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
CaloCell::eta
virtual double eta() const override final
get eta (through CaloDetDescrElement)
Definition: CaloCell.h:366
egammaForwardBuilder::m_maxDelEtaCells
Gaudi::Property< int > m_maxDelEtaCells
Size of maximum search window in eta.
Definition: egammaForwardBuilder.h:157
egammaForwardBuilder::m_electronOutputKey
SG::WriteHandleKey< xAOD::ElectronContainer > m_electronOutputKey
Output electron container.
Definition: egammaForwardBuilder.h:122