File indexing completed on 2024-04-06 11:58:12
0001 #include "CalibFormats/HcalObjects/interface/HcalCalibrationsSet.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 HcalCalibrationsSet::HcalCalibrationsSet() {}
0009
0010 const HcalCalibrations& HcalCalibrationsSet::getCalibrations(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") << "Unavailable HcalCalibrations for cell " << HcalGenericDetId(fId);
0015 return cell->second.calib;
0016 }
0017
0018 void HcalCalibrationsSet::setCalibrations(DetId fId, const HcalCalibrations& ca) {
0019 DetId fId2(hcalTransformedId(fId));
0020 auto cell = mItems.find(fId2);
0021 if (cell == mItems.end()) {
0022 auto result = mItems.emplace(fId2, fId2);
0023 result.first->second.calib = ca;
0024 return;
0025 }
0026 cell->second.calib = ca;
0027 }
0028
0029 void HcalCalibrationsSet::clear() { mItems.clear(); }
0030
0031 std::vector<DetId> HcalCalibrationsSet::getAllChannels() const {
0032 std::vector<DetId> channels;
0033 channels.reserve(mItems.size());
0034 for (const auto& tmp : mItems) {
0035 channels.push_back(tmp.second.id);
0036 }
0037 return channels;
0038 }