ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
PhysicsAnalysis
Columnar
ColumnarCluster
ColumnarCluster
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
11
#include <
ColumnarCore/ColumnAccessor.h
>
12
#include <
ColumnarCore/VectorColumn.h
>
13
14
#include <
ColumnarCluster/ClusterDef.h
>
15
16
#include <
xAODCaloEvent/CaloClusterDetails.h
>
17
18
namespace
columnar
19
{
20
namespace
ClusterHelpers
21
{
29
30
31
template
<ContainerIdConcept CI = ClusterDef,
typename
CM=ColumnarModeDefault>
32
class
EnergyBEAccessor
final
33
{
34
ColumnAccessor<CI,std::vector<float>
,CM>
m_eAcc
;
35
ColumnAccessor<CI,uint32_t,CM>
m_samplingPatternAcc
;
36
37
public
:
38
39
typedef
CaloSampling::CaloSample
CaloSample
;
40
41
EnergyBEAccessor
(
ColumnarTool<CM>
& columnarTool)
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 = ClusterDef,
typename
CM=ColumnarModeDefault>
59
class
EtaBEAccessor
final
60
{
61
ColumnAccessor<CI,std::vector<float>
,CM>
m_eAcc
;
62
ColumnAccessor<CI,std::vector<float>
,CM>
m_etaAcc
;
63
ColumnAccessor<CI,uint32_t,CM>
m_samplingPatternAcc
;
64
65
public
:
66
67
typedef
CaloSampling::CaloSample
CaloSample
;
68
69
EtaBEAccessor
(
ColumnarTool<CM>
& columnarTool)
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
template
<ContainerIdConcept CI = ClusterDef,
typename
CM=ColumnarModeDefault>
87
class
PhiBEAccessor
final
88
{
89
ColumnAccessor<CI,std::vector<float>
,CM>
m_eAcc
;
90
ColumnAccessor<CI,std::vector<float>
,CM>
m_phiAcc
;
91
ColumnAccessor<CI,uint32_t,CM>
m_samplingPatternAcc
;
92
93
public
:
94
95
typedef
CaloSampling::CaloSample
CaloSample
;
96
97
PhiBEAccessor
(
ColumnarTool<CM>
& columnarTool)
98
:
m_eAcc
(columnarTool,
"e_sampl"
),
m_phiAcc
(columnarTool,
"phi_sampl"
),
m_samplingPatternAcc
(columnarTool,
"samplingPattern"
) {}
99
100
float
operator ()
(
ObjectId<CI,CM>
object
,
const
unsigned
sample)
const
101
{
102
// Newer xAODs have the sampling pattern as an auxiliary
103
// variable which is what we are using by default. For older
104
// xAODs we fall back to the xAOD-only implementation, and hope
105
// that we are not in columnar mode.
106
const
auto
samplingPattern =
m_samplingPatternAcc
.isAvailable(
object
) ?
m_samplingPatternAcc
(
object
) :
object
.getXAODObject().samplingPattern();
107
108
return
xAOD::CaloClusterDetails::phiBE
(sample, samplingPattern,
m_eAcc
(
object
),
m_phiAcc
(
object
));
109
}
110
};
111
}
112
}
113
114
#endif
CaloClusterDetails.h
Helper functions for CaloCluster accessors.
ClusterDef.h
ColumnAccessor.h
VectorColumn.h
CaloSampling::CaloSample
CaloSample
Definition
Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:22
columnar::ClusterHelpers::EnergyBEAccessor::EnergyBEAccessor
EnergyBEAccessor(ColumnarTool< CM > &columnarTool)
Definition
ClusterHelpers.h:41
columnar::ClusterHelpers::EnergyBEAccessor::CaloSample
CaloSampling::CaloSample CaloSample
Definition
ClusterHelpers.h:39
columnar::ClusterHelpers::EnergyBEAccessor::operator()
float operator()(ObjectId< CI, CM > object, const unsigned sample) const
Definition
ClusterHelpers.h:44
columnar::ClusterHelpers::EnergyBEAccessor::m_eAcc
ColumnAccessor< CI, std::vector< float >, CM > m_eAcc
Definition
ClusterHelpers.h:34
columnar::ClusterHelpers::EnergyBEAccessor::m_samplingPatternAcc
ColumnAccessor< CI, uint32_t, CM > m_samplingPatternAcc
Definition
ClusterHelpers.h:35
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::ClusterHelpers::EtaBEAccessor::operator()
float operator()(ObjectId< CI, CM > object, const unsigned sample) const
Definition
ClusterHelpers.h:72
columnar::ClusterHelpers::EtaBEAccessor::m_etaAcc
ColumnAccessor< CI, std::vector< float >, CM > m_etaAcc
Definition
ClusterHelpers.h:62
columnar::ClusterHelpers::EtaBEAccessor::CaloSample
CaloSampling::CaloSample CaloSample
Definition
ClusterHelpers.h:67
columnar::ClusterHelpers::EtaBEAccessor::m_samplingPatternAcc
ColumnAccessor< CI, uint32_t, CM > m_samplingPatternAcc
Definition
ClusterHelpers.h:63
columnar::ClusterHelpers::PhiBEAccessor::m_samplingPatternAcc
ColumnAccessor< CI, uint32_t, CM > m_samplingPatternAcc
Definition
ClusterHelpers.h:91
columnar::ClusterHelpers::PhiBEAccessor::m_phiAcc
ColumnAccessor< CI, std::vector< float >, CM > m_phiAcc
Definition
ClusterHelpers.h:90
columnar::ClusterHelpers::PhiBEAccessor::PhiBEAccessor
PhiBEAccessor(ColumnarTool< CM > &columnarTool)
Definition
ClusterHelpers.h:97
columnar::ClusterHelpers::PhiBEAccessor::CaloSample
CaloSampling::CaloSample CaloSample
Definition
ClusterHelpers.h:95
columnar::ClusterHelpers::PhiBEAccessor::m_eAcc
ColumnAccessor< CI, std::vector< float >, CM > m_eAcc
Definition
ClusterHelpers.h:89
columnar::ClusterHelpers::PhiBEAccessor::operator()
float operator()(ObjectId< CI, CM > object, const unsigned sample) const
Definition
ClusterHelpers.h:100
columnar::ColumnarTool
the base class for all columnar components
Definition
ColumnAccessorDataArray.h:17
columnar::ObjectId
a class representing a single object (electron, muons, etc.)
Definition
ContainerId.h:205
columnar::ClusterHelpers
Definition
ClusterHelpers.h:21
columnar
Definition
ClusterDef.h:16
columnar::ColumnAccessor
AccessorTemplate< CI, CT, ColumnAccessMode::input, CM > ColumnAccessor
Definition
ColumnAccessor.h:274
xAOD::CaloClusterDetails::phiBE
float phiBE(const unsigned sample, const std::uint32_t samplingPattern, const std::span< const float > e_sampl, const std::span< const float > phi_sampl)
Definition
CaloClusterDetails.h:145
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:107
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:87
Generated on
for ATLAS Offline Software by
1.17.0