Back to home page

Project CMSSW displayed by LXR

 
 

    


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 }