7#include "GeoModelKernel/throwExcept.h"
12 ostr<<
"slope: "<<std::setprecision(15)<<obj.slope;
13 ostr<<
" intercept: "<<std::setprecision(15)<<obj.intercept;
29 return static_cast<unsigned>(hash)*(idHelper.
gasGapMax()) + (idHelper.
gasGap(chan_id) -1);
32 return static_cast<unsigned>(hash)*(idHelper.
gasGapMax() * 3 ) +
68 if (calib_mod.
channels.size() <= channel) calib_mod.
channels.resize(channel +1);
72 " "<<(*calib_mod.
channels[channel] ));
75 calib_mod.
channels[channel] = std::make_unique<CalibConstants>(std::move(
constants));
90std::vector<Identifier>
92 std::vector<Identifier> chnls;
94 chnls.reserve(calibMap.size());
97 if (module.channels.empty())
continue;
98 if (side ==
"A" &&
m_idHelperSvc->stationEta(module.layer_id) < 0)
continue;
99 if (side ==
"C" &&
m_idHelperSvc->stationEta(module.layer_id) > 0)
continue;
102 if (tech ==
"STGC")
continue;
104 for (
unsigned chn = 1 ; chn <=
module.channels.size() ; ++chn) {
105 if (!module.channels[chn -1])
continue;
107 chnls.push_back(idHelper.
channelID(module.layer_id,
109 idHelper.
gasGap(module.layer_id), chn ));
112 if (tech ==
"MM")
break;
114 for (
unsigned chn = 1 ; chn <=
module.channels.size() ; ++chn) {
115 if (!module.channels[chn -1])
continue;
116 chnls.push_back(idHelper.
channelID(module.layer_id,
118 idHelper.
gasGap(module.layer_id),
131 ATH_MSG_ERROR(
"NswCalibDbTimeChargeData::getCalibForChannel: array index is negative.");
137 if (calibMap.at(array_idx).channels.size() > channel && calibMap[array_idx].channels[channel]) {
138 return calibMap[array_idx].channels[channel].get();
#define ATH_MSG_VERBOSE(x)
std::ostream & operator<<(std::ostream &ostr, const NswCalibDbTimeChargeData::CalibConstants &obj)
AthMessaging(IMessageSvc *msgSvc, const std::string &name)
Constructor.
This is a "hash" representation of an Identifier.
Identifier channelID(int stationName, int stationEta, int stationPhi, int multilayer, int gasGap, int channel) const
int gasGap(const Identifier &id) const override
get the hashes
int multilayer(const Identifier &id) const
Interface for Helper service that creates muon Identifiers and can be used to print Identifiers.
const CalibConstants * getCalibForChannel(const CalibDataType type, const Identifier &channelId) const
Retrieves the calibration constant for a particular readout channel.
const Muon::IMuonIdHelperSvc * m_idHelperSvc
int identToModuleIdx(const Identifier &chan_id) const
void setZero(CalibDataType type, MuonCond::CalibTechType tech, CalibConstants constants)
void setData(CalibDataType type, const Identifier &chnlId, CalibConstants constants)
NswCalibDbTimeChargeData(const Muon::IMuonIdHelperSvc *idHelperSvc)
ChannelCalibMap m_pdo_data
const size_t m_nMmElements
Segmentation of the elements is per NSW gasGap. Each wedge has 4 gasgaps.
const CalibConstants * getZeroCalibChannel(const CalibDataType type, const MuonCond::CalibTechType tech) const
Returns the dummy calibration constant for the given technology type.
ChannelCalibMap m_tdo_data
std::vector< Identifier > getChannelIds(const CalibDataType type, const std::string &tech, const std::string &side) const
std::vector< CalibModule > ChannelCalibMap
std::array< ZeroCalibMap, Muon::MuonStationIndex::toInt(MuonCond::CalibTechType::nTypes)> m_zero
const size_t m_nStgcElements
Additionally reserve space for the 3 channel types.
int multilayer(const Identifier &id) const
int channelType(const Identifier &id) const
int gasGap(const Identifier &id) const override
get the hashes
Identifier channelID(int stationName, int stationEta, int stationPhi, int multilayer, int gasGap, int channelType, int channel) const
constexpr int toInt(const EnumType enumVal)
Helper struct to cache all calibration constants in a common place of the memory.
std::vector< std::unique_ptr< CalibConstants > > channels
#define THROW_EXCEPTION(MESSAGE)