Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 11:58:09

0001 //
0002 // Original Author:  Fedor Ratnikov Oct 21, 2005
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 };