5 #ifndef XAODCALOEVENT_CALOCLUSTERDETAILS_H
6 #define XAODCALOEVENT_CALOCLUSTERDETAILS_H
8 #include <CaloGeoHelpers/CaloSampling.h>
15 namespace CaloClusterDetails
58 if ((samplingPattern & (0x1U <<
s)) == 0) {
64 return std::popcount(samplingPattern << (32 -
s));
106 [[nodiscard]]
inline float etaBE(
const unsigned sample,
const std::uint32_t samplingPattern,
const std::span<const float> e_sampl,
const std::span<const float> eta_sampl) {
110 const bool haveBarrel=
hasSampling(barrelSample, samplingPattern);
111 const bool haveEndcap=
hasSampling(endcapSample, samplingPattern);
112 if (haveBarrel && haveEndcap) {
114 float eBarrel=
getSamplVar(barrelSample,samplingPattern,e_sampl);
115 float eEndcap=
getSamplVar(endcapSample,samplingPattern,e_sampl);
117 float etaBarrel=
getSamplVar(barrelSample,samplingPattern,eta_sampl);
118 float etaEndcap=
getSamplVar(endcapSample,samplingPattern,eta_sampl);
119 float eSum=eBarrel + eEndcap;
122 if ((eBarrel > 0 && eEndcap > 0) || (eBarrel < 0 && eEndcap < 0))
123 return (eBarrel * etaBarrel + eEndcap * etaEndcap) / eSum;
124 else if (eBarrel > 0)
129 return (0.5 * (etaBarrel + etaEndcap));
132 return getSamplVar(barrelSample,samplingPattern,eta_sampl);
135 return getSamplVar(endcapSample,samplingPattern,eta_sampl);