15void copy_values_from_map_to_offset_vector(
const std::map<detid_t, double> &map_values,
const detid_t idmin,
16 const detid_t idmax, std::vector<double> &vector_values) {
18 vector_values.assign(
static_cast<size_t>(idmax - idmin + 1), 1.);
21 auto iter = map_values.find(idmin);
22 if (iter == map_values.end())
23 throw std::runtime_error(
"Failed to find idmin=" +
std::to_string(idmin) +
" in map");
24 auto iter_end = map_values.find(idmax);
25 if (iter_end != map_values.end())
29 for (; iter != iter_end; ++iter) {
30 const auto index =
static_cast<size_t>(iter->first - idmin);
31 vector_values[
index] = iter->second;
51 const std::map<detid_t, double> &calibration_map,
52 const std::map<detid_t, double> &scale_at_sample,
const std::set<detid_t> &mask)
53 : m_detid_offset(idmin) {
58 throw std::runtime_error(
"encountered invalid detector ID range " +
std::to_string(
idmin) +
" > " +
65 if (time_conversion != 1.) {
67 [time_conversion](
const auto &
value) { return std::move(time_conversion * value); });
71 if (!scale_at_sample.empty())
76 for (
const auto &detid : mask) {
double value
The value of the point.
std::map< DeltaEMode::Type, std::string > index
const double & value_calibration(const detid_t detid) const
This assumes that everything is in range.
const detid_t & idmin() const
const detid_t m_detid_offset
BankCalibration(const detid_t idmin, const detid_t idmax, const double time_conversion, const std::map< detid_t, double > &calibration_map, const std::map< detid_t, double > &scale_at_sample, const std::set< detid_t > &mask)
Calibration of a subset of pixels as requested in the constructor.
std::vector< double > m_scale_at_sample
double value_scale_at_sample(const detid_t detid) const
This returns a value with no bounds checking.
std::vector< double > m_calibration
constexpr double IGNORE_PIXEL
int32_t detid_t
Typedef for a detector ID.
std::string to_string(const wide_integer< Bits, Signed > &n)