File indexing completed on 2024-04-06 11:58:12
0001 #include "CalibFormats/HcalObjects/interface/HcalCalibrationWidthsSet.h"
0002 #include "DataFormats/HcalDetId/interface/HcalGenericDetId.h"
0003 #include "FWCore/Utilities/interface/Exception.h"
0004 #include <algorithm>
0005 #include <iostream>
0006 #include <utility>
0007
0008 HcalCalibrationWidthsSet::HcalCalibrationWidthsSet() {}
0009
0010 const HcalCalibrationWidths& HcalCalibrationWidthsSet::getCalibrationWidths(const DetId fId) const {
0011 DetId fId2(hcalTransformedId(fId));
0012 auto cell = mItems.find(fId2);
0013 if ((cell == mItems.end()) || (!hcalEqualDetId(cell->first, fId2)))
0014 throw cms::Exception("Conditions not found")
0015 << "Unavailable HcalCalibrationWidths for cell " << HcalGenericDetId(fId);
0016 return cell->second.calib;
0017 }
0018
0019 void HcalCalibrationWidthsSet::setCalibrationWidths(DetId fId, const HcalCalibrationWidths& ca) {
0020 DetId fId2(hcalTransformedId(fId));
0021 auto cell = mItems.find(fId2);
0022 if (cell == mItems.end()) {
0023 auto result = mItems.emplace(fId2, fId2);
0024 result.first->second.calib = ca;
0025 return;
0026 }
0027 cell->second.calib = ca;
0028 }
0029
0030 void HcalCalibrationWidthsSet::clear() { mItems.clear(); }
0031
0032 std::vector<DetId> HcalCalibrationWidthsSet::getAllChannels() const {
0033 std::vector<DetId> channels;
0034 channels.reserve(mItems.size());
0035 for (const auto& tmp : mItems) {
0036 channels.push_back(tmp.second.id);
0037 }
0038 return channels;
0039 }