File indexing completed on 2024-09-07 04:34:53
0001
0002
0003
0004
0005 #include <map>
0006 #include <string>
0007
0008 #include "FWCore/Framework/interface/ESProducer.h"
0009 #include "FWCore/Framework/interface/EventSetupRecordIntervalFinder.h"
0010 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0011 #include "CalibCalorimetry/HcalAlgos/interface/HcalDbASCIIIO.h"
0012 #include "CondFormats/DataRecord/interface/HcalTPParametersRcd.h"
0013 #include "CondFormats/HcalObjects/interface/AllObjects.h"
0014 class ParameterSet;
0015
0016 class HcalPedestalsRcd;
0017 class HcalPedestalWidthsRcd;
0018 class HcalGainsRcd;
0019 class HcalGainWidthsRcd;
0020 class HcalPFCutsRcd;
0021 class HcalQIEDataRcd;
0022 class HcalQIETypesRcd;
0023 class HcalChannelQualityRcd;
0024 class HcalElectronicsMapRcd;
0025 class HcalFrontEndMapRcd;
0026 class HcalRespCorrsRcd;
0027 class HcalTimeCorrsRcd;
0028 class HcalLUTCorrsRcd;
0029 class HcalPFCorrsRcd;
0030 class HcalZSThresholdsRcd;
0031 class HcalL1TriggerObjectsRcd;
0032 class HcalValidationCorrsRcd;
0033 class HcalLutMetadataRcd;
0034 class HcalDcsRcd;
0035 class HcalDcsMapRcd;
0036 class HcalRecoParamsRcd;
0037 class HcalLongRecoParamsRcd;
0038 class HcalZDCLowGainFractionsRcd;
0039 class HcalMCParamsRcd;
0040 class HcalFlagHFDigiTimeParamsRcd;
0041 class HcalTimingParamsRcd;
0042 class HcalSiPMParametersRcd;
0043 class HcalSiPMCharacteristicsRcd;
0044 class HcalTPChannelParametersRcd;
0045 class HcalTPParaamersRcd;
0046
0047 class HcalTextCalibrations : public edm::ESProducer, public edm::EventSetupRecordIntervalFinder {
0048 public:
0049 HcalTextCalibrations(const edm::ParameterSet&);
0050 ~HcalTextCalibrations() override;
0051
0052 void produce() {}
0053
0054 template <class T>
0055 class CheckGetObject {
0056 public:
0057 CheckGetObject(const HcalTopology* topo) {}
0058 std::unique_ptr<T> operator()(std::istream& inStream) {
0059 auto result = makeResult();
0060 if (!HcalDbASCIIIO::getObject(inStream, &*result))
0061 result.reset(nullptr);
0062 return result;
0063 }
0064 virtual ~CheckGetObject() = default;
0065
0066 protected:
0067 virtual std::unique_ptr<T> makeResult() { return std::make_unique<T>(); }
0068 };
0069 template <class T>
0070 class CheckGetObjectTopo : public CheckGetObject<T> {
0071 public:
0072 CheckGetObjectTopo(const HcalTopology* topo) : CheckGetObject<T>(topo), topo_(topo) {}
0073 ~CheckGetObjectTopo() override = default;
0074
0075 protected:
0076 std::unique_ptr<T> makeResult() override { return std::make_unique<T>(topo_); }
0077
0078 private:
0079 const HcalTopology* topo_;
0080 };
0081 template <class T>
0082 class CheckCreateObject {
0083 public:
0084 CheckCreateObject(const HcalTopology* topo) {}
0085 std::unique_ptr<T> operator()(std::istream& inStream) { return HcalDbASCIIIO::createObject<T>(inStream); }
0086 };
0087
0088 protected:
0089 void setIntervalFor(const edm::eventsetup::EventSetupRecordKey&,
0090 const edm::IOVSyncValue&,
0091 edm::ValidityInterval&) override;
0092
0093 std::unique_ptr<HcalPedestals> producePedestals(const HcalPedestalsRcd& rcd);
0094 std::unique_ptr<HcalPedestalWidths> producePedestalWidths(const HcalPedestalWidthsRcd& rcd);
0095 std::unique_ptr<HcalPedestals> produceEffectivePedestals(const HcalPedestalsRcd& rcd);
0096 std::unique_ptr<HcalPedestalWidths> produceEffectivePedestalWidths(const HcalPedestalWidthsRcd& rcd);
0097 std::unique_ptr<HcalGains> produceGains(const HcalGainsRcd& rcd);
0098 std::unique_ptr<HcalGainWidths> produceGainWidths(const HcalGainWidthsRcd& rcd);
0099 std::unique_ptr<HcalPFCuts> producePFCuts(const HcalPFCutsRcd& rcd);
0100 std::unique_ptr<HcalQIEData> produceQIEData(const HcalQIEDataRcd& rcd);
0101 std::unique_ptr<HcalQIETypes> produceQIETypes(const HcalQIETypesRcd& rcd);
0102 std::unique_ptr<HcalChannelQuality> produceChannelQuality(const HcalChannelQualityRcd& rcd);
0103 std::unique_ptr<HcalElectronicsMap> produceElectronicsMap(const HcalElectronicsMapRcd& rcd);
0104 std::unique_ptr<HcalFrontEndMap> produceFrontEndMap(const HcalFrontEndMapRcd& rcd);
0105
0106 std::unique_ptr<HcalRespCorrs> produceRespCorrs(const HcalRespCorrsRcd& rcd);
0107 std::unique_ptr<HcalZSThresholds> produceZSThresholds(const HcalZSThresholdsRcd& rcd);
0108 std::unique_ptr<HcalL1TriggerObjects> produceL1TriggerObjects(const HcalL1TriggerObjectsRcd& rcd);
0109 std::unique_ptr<HcalTimeCorrs> produceTimeCorrs(const HcalTimeCorrsRcd& rcd);
0110 std::unique_ptr<HcalLUTCorrs> produceLUTCorrs(const HcalLUTCorrsRcd& rcd);
0111 std::unique_ptr<HcalPFCorrs> producePFCorrs(const HcalPFCorrsRcd& rcd);
0112
0113 std::unique_ptr<HcalRecoParams> produceRecoParams(const HcalRecoParamsRcd& rcd);
0114 std::unique_ptr<HcalLongRecoParams> produceLongRecoParams(const HcalLongRecoParamsRcd& rcd);
0115 std::unique_ptr<HcalZDCLowGainFractions> produceZDCLowGainFractions(const HcalZDCLowGainFractionsRcd& rcd);
0116 std::unique_ptr<HcalMCParams> produceMCParams(const HcalMCParamsRcd& rcd);
0117 std::unique_ptr<HcalFlagHFDigiTimeParams> produceFlagHFDigiTimeParams(const HcalFlagHFDigiTimeParamsRcd& rcd);
0118
0119 std::unique_ptr<HcalValidationCorrs> produceValidationCorrs(const HcalValidationCorrsRcd& rcd);
0120 std::unique_ptr<HcalLutMetadata> produceLutMetadata(const HcalLutMetadataRcd& rcd);
0121 std::unique_ptr<HcalDcsValues> produceDcsValues(HcalDcsRcd const& rcd);
0122 std::unique_ptr<HcalDcsMap> produceDcsMap(const HcalDcsMapRcd& rcd);
0123
0124 std::unique_ptr<HcalTimingParams> produceTimingParams(const HcalTimingParamsRcd& rcd);
0125 std::unique_ptr<HcalSiPMParameters> produceSiPMParameters(const HcalSiPMParametersRcd& rcd);
0126 std::unique_ptr<HcalSiPMCharacteristics> produceSiPMCharacteristics(const HcalSiPMCharacteristicsRcd& rcd);
0127 std::unique_ptr<HcalTPChannelParameters> produceTPChannelParameters(const HcalTPChannelParametersRcd& rcd);
0128 std::unique_ptr<HcalTPParameters> produceTPParameters(const HcalTPParametersRcd& rcd);
0129
0130 private:
0131 std::map<std::string, std::string> mInputs;
0132 std::unordered_map<std::string, edm::ESGetToken<HcalTopology, HcalRecNumberingRecord>> mTokens;
0133 };