ATLAS Offline Software
ClusterHelpers.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 
8 #ifndef COLUMNAR_CLUSTER_CLUSTER_HELPERS_H
9 #define COLUMNAR_CLUSTER_CLUSTER_HELPERS_H
10 
13 
15 
17 
18 namespace columnar
19 {
20  namespace ClusterHelpers
21  {
29 
30 
31  template<ContainerIdConcept CI = ContainerId::cluster,typename CM=ColumnarModeDefault>
33  {
36 
37  public:
38 
40 
42  : m_eAcc (columnarTool, "e_sampl"), m_samplingPatternAcc (columnarTool, "samplingPattern") {}
43 
44  float operator () (ObjectId<CI,CM> object, const unsigned sample) const
45  {
46  // Newer xAODs have the sampling pattern as an auxiliary
47  // variable which is what we are using by default. For older
48  // xAODs we fall back to the xAOD-only implementation, and hope
49  // that we are not in columnar mode.
50  const auto samplingPattern = m_samplingPatternAcc.isAvailable(object) ? m_samplingPatternAcc(object) : object.getXAODObject().samplingPattern();
51 
52  return xAOD::CaloClusterDetails::energyBE(sample, samplingPattern, m_eAcc(object));
53  }
54  };
55 
56 
57 
58  template<ContainerIdConcept CI = ContainerId::cluster,typename CM=ColumnarModeDefault>
60  {
64 
65  public:
66 
68 
70  : m_eAcc (columnarTool, "e_sampl"), m_etaAcc (columnarTool, "eta_sampl"), m_samplingPatternAcc (columnarTool, "samplingPattern") {}
71 
72  float operator () (ObjectId<CI,CM> object, const unsigned sample) const
73  {
74  // Newer xAODs have the sampling pattern as an auxiliary
75  // variable which is what we are using by default. For older
76  // xAODs we fall back to the xAOD-only implementation, and hope
77  // that we are not in columnar mode.
78  const auto samplingPattern = m_samplingPatternAcc.isAvailable(object) ? m_samplingPatternAcc(object) : object.getXAODObject().samplingPattern();
79 
80  return xAOD::CaloClusterDetails::etaBE(sample, samplingPattern, m_eAcc(object), m_etaAcc(object));
81  }
82  };
83  }
84 }
85 
86 #endif
columnar::ClusterHelpers::EnergyBEAccessor::m_samplingPatternAcc
ColumnAccessor< CI, uint32_t, CM > m_samplingPatternAcc
Definition: ClusterHelpers.h:35
columnar::ClusterHelpers::EtaBEAccessor::CaloSample
CaloSampling::CaloSample CaloSample
Definition: ClusterHelpers.h:67
columnar::ClusterHelpers::EnergyBEAccessor::operator()
float operator()(ObjectId< CI, CM > object, const unsigned sample) const
Definition: ClusterHelpers.h:44
CaloClusterDetails.h
xAOD::CaloClusterDetails::etaBE
float etaBE(const unsigned sample, const std::uint32_t samplingPattern, const std::span< const float > e_sampl, const std::span< const float > eta_sampl)
Get the eta in one layer of the EM Calo.
Definition: CaloClusterDetails.h:106
columnar::ClusterHelpers::EtaBEAccessor::m_etaAcc
ColumnAccessor< CI, std::vector< float >, CM > m_etaAcc
Definition: ClusterHelpers.h:62
xAOD::CaloClusterDetails::energyBE
float energyBE(const unsigned sample, const std::uint32_t samplingPattern, const std::span< const float > e_sampl)
Get the energy in one layer of the EM Calo.
Definition: CaloClusterDetails.h:86
columnar::ClusterHelpers::EnergyBEAccessor::CaloSample
CaloSampling::CaloSample CaloSample
Definition: ClusterHelpers.h:39
columnar::ClusterHelpers::EtaBEAccessor::operator()
float operator()(ObjectId< CI, CM > object, const unsigned sample) const
Definition: ClusterHelpers.h:72
columnar::ClusterHelpers::EtaBEAccessor
Definition: ClusterHelpers.h:60
FullCPAlgorithmsTest_eljob.sample
sample
Definition: FullCPAlgorithmsTest_eljob.py:116
CaloSampling::CaloSample
CaloSample
Definition: Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:22
ColumnAccessor.h
ClusterDef.h
VectorColumn.h
columnar::ClusterHelpers::EtaBEAccessor::m_samplingPatternAcc
ColumnAccessor< CI, uint32_t, CM > m_samplingPatternAcc
Definition: ClusterHelpers.h:63
columnar::ClusterHelpers::EnergyBEAccessor::EnergyBEAccessor
EnergyBEAccessor(ColumnarTool< CM > &columnarTool)
Definition: ClusterHelpers.h:41
columnar::final
CM final
Definition: ColumnAccessor.h:106
columnar::ObjectId
a class representing a single object (electron, muons, etc.)
Definition: ContainerId.h:178
columnar::ClusterHelpers::EtaBEAccessor::EtaBEAccessor
EtaBEAccessor(ColumnarTool< CM > &columnarTool)
Definition: ClusterHelpers.h:69
columnar::ClusterHelpers::EtaBEAccessor::m_eAcc
ColumnAccessor< CI, std::vector< float >, CM > m_eAcc
Definition: ClusterHelpers.h:61
columnar
Definition: ClusterDef.h:16
columnar::ClusterHelpers::EnergyBEAccessor::m_eAcc
ColumnAccessor< CI, std::vector< float >, CM > m_eAcc
Definition: ClusterHelpers.h:34
columnar::ColumnarTool
the base class for all columnar components
Definition: ColumnAccessorDataArray.h:17
columnar::ColumnarModeXAOD
Definition: ColumnarDef.h:18
columnar::AccessorTemplate
the raw column accessor template class
Definition: ColumnAccessor.h:81
columnar::ClusterHelpers::EnergyBEAccessor
Definition: ClusterHelpers.h:33