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 // ESSource to generate default HCAL calibration objects
0005 //
0006 #include <map>
0007 #include <unordered_map>
0008 #include <string>
0009 
0010 #include "FWCore/Framework/interface/ESProducer.h"
0011 #include "FWCore/Framework/interface/EventSetupRecordIntervalFinder.h"
0012 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0013 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0014 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0015 #include "Geometry/CaloTopology/interface/HcalTopology.h"
0016 #include "CondFormats/HcalObjects/interface/AllObjects.h"
0017 #include "CalibCalorimetry/HcalAlgos/interface/HBHERecalibration.h"
0018 #include "CondFormats/DataRecord/interface/HcalTPParametersRcd.h"
0019 #include "CalibCalorimetry/HcalAlgos/interface/HFRecalibration.h"
0020 #include "CalibCalorimetry/HcalAlgos/interface/HcalDbHardcode.h"
0021 #include "Geometry/Records/interface/HcalRecNumberingRecord.h"
0022 #include "CondFormats/DataRecord/interface/HcalAllRcds.h"
0023 
0024 class ParameterSet;
0025 
0026 class HcalPedestalsRcd;
0027 class HcalPedestalWidthsRcd;
0028 class HcalGainsRcd;
0029 class HcalGainWidthsRcd;
0030 class HcalPFCutsRcd;
0031 class HcalQIEDataRcd;
0032 class HcalQIETypesRcd;
0033 class HcalChannelQualityRcd;
0034 class HcalElectronicsMapRcd;
0035 class HcalRespCorrsRcd;
0036 class HcalZSThresholdsRcd;
0037 class HcalL1TriggerObjectsRcd;
0038 class HcalTimeCorrsRcd;
0039 class HcalLUTCorrsRcd;
0040 class HcalPFCorrsRcd;
0041 class HcalValidationCorrsRcd;
0042 class HcalLutMetadataRcd;
0043 class HcalDcsRcd;
0044 class HcalDcsMapRcd;
0045 class HcalRecoParamsRcd;
0046 class HcalLongRecoParamsRcd;
0047 class HcalZDCLowGainFractionsRcd;
0048 class HcalMCParamsRcd;
0049 class HcalFlagHFDigiTimeParamsRcd;
0050 class HcalTimingParamsRcd;
0051 class HcalFrontEndMapRcd;
0052 class HcalSiPMParametersRcd;
0053 class HcalSiPMCharacteristicsRcd;
0054 class HcalTPChannelParametersRcd;
0055 class HcalTPParaamersRcd;
0056 
0057 class HcalHardcodeCalibrations : public edm::ESProducer, public edm::EventSetupRecordIntervalFinder {
0058 public:
0059   HcalHardcodeCalibrations(const edm::ParameterSet&);
0060   ~HcalHardcodeCalibrations() override;
0061 
0062   static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0063 
0064 protected:
0065   void setIntervalFor(const edm::eventsetup::EventSetupRecordKey&,
0066                       const edm::IOVSyncValue&,
0067                       edm::ValidityInterval&) override;
0068 
0069   std::unique_ptr<HcalPedestals> producePedestals_(const HcalPedestalsRcd& rcd,
0070                                                    const edm::ESGetToken<HcalTopology, HcalRecNumberingRecord>&,
0071                                                    bool eff);
0072   std::unique_ptr<HcalPedestalWidths> producePedestalWidths_(
0073       const HcalPedestalWidthsRcd& rcd, const edm::ESGetToken<HcalTopology, HcalRecNumberingRecord>&, bool eff);
0074   std::unique_ptr<HcalPedestals> producePedestals(const HcalPedestalsRcd& rcd);
0075   std::unique_ptr<HcalPedestalWidths> producePedestalWidths(const HcalPedestalWidthsRcd& rcd);
0076   std::unique_ptr<HcalPedestals> produceEffectivePedestals(const HcalPedestalsRcd& rcd);
0077   std::unique_ptr<HcalPedestalWidths> produceEffectivePedestalWidths(const HcalPedestalWidthsRcd& rcd);
0078   std::unique_ptr<HcalGains> produceGains(const HcalGainsRcd& rcd);
0079   std::unique_ptr<HcalGainWidths> produceGainWidths(const HcalGainWidthsRcd& rcd);
0080   std::unique_ptr<HcalPFCuts> producePFCuts(const HcalPFCutsRcd& rcd);
0081   std::unique_ptr<HcalQIEData> produceQIEData(const HcalQIEDataRcd& rcd);
0082   std::unique_ptr<HcalQIETypes> produceQIETypes(const HcalQIETypesRcd& rcd);
0083   std::unique_ptr<HcalChannelQuality> produceChannelQuality(const HcalChannelQualityRcd& rcd);
0084   std::unique_ptr<HcalElectronicsMap> produceElectronicsMap(const HcalElectronicsMapRcd& rcd);
0085 
0086   std::unique_ptr<HcalRespCorrs> produceRespCorrs(const HcalRespCorrsRcd& rcd);
0087   std::unique_ptr<HcalZSThresholds> produceZSThresholds(const HcalZSThresholdsRcd& rcd);
0088   std::unique_ptr<HcalL1TriggerObjects> produceL1TriggerObjects(const HcalL1TriggerObjectsRcd& rcd);
0089   std::unique_ptr<HcalTimeCorrs> produceTimeCorrs(const HcalTimeCorrsRcd& rcd);
0090   std::unique_ptr<HcalLUTCorrs> produceLUTCorrs(const HcalLUTCorrsRcd& rcd);
0091   std::unique_ptr<HcalPFCorrs> producePFCorrs(const HcalPFCorrsRcd& rcd);
0092 
0093   std::unique_ptr<HcalValidationCorrs> produceValidationCorrs(const HcalValidationCorrsRcd& rcd);
0094   std::unique_ptr<HcalLutMetadata> produceLutMetadata(const HcalLutMetadataRcd& rcd);
0095   std::unique_ptr<HcalDcsValues> produceDcsValues(const HcalDcsRcd& rcd);
0096   std::unique_ptr<HcalDcsMap> produceDcsMap(const HcalDcsMapRcd& rcd);
0097 
0098   std::unique_ptr<HcalRecoParams> produceRecoParams(const HcalRecoParamsRcd& rcd);
0099   std::unique_ptr<HcalTimingParams> produceTimingParams(const HcalTimingParamsRcd& rcd);
0100   std::unique_ptr<HcalLongRecoParams> produceLongRecoParams(const HcalLongRecoParamsRcd& rcd);
0101   std::unique_ptr<HcalZDCLowGainFractions> produceZDCLowGainFractions(const HcalZDCLowGainFractionsRcd& rcd);
0102 
0103   std::unique_ptr<HcalMCParams> produceMCParams(const HcalMCParamsRcd& rcd);
0104   std::unique_ptr<HcalFlagHFDigiTimeParams> produceFlagHFDigiTimeParams(const HcalFlagHFDigiTimeParamsRcd& rcd);
0105 
0106   std::unique_ptr<HcalFrontEndMap> produceFrontEndMap(const HcalFrontEndMapRcd& rcd);
0107 
0108   std::unique_ptr<HcalSiPMParameters> produceSiPMParameters(const HcalSiPMParametersRcd& rcd);
0109   std::unique_ptr<HcalSiPMCharacteristics> produceSiPMCharacteristics(const HcalSiPMCharacteristicsRcd& rcd);
0110   std::unique_ptr<HcalTPChannelParameters> produceTPChannelParameters(const HcalTPChannelParametersRcd& rcd);
0111   std::unique_ptr<HcalTPParameters> produceTPParameters(const HcalTPParametersRcd& rcd);
0112 
0113 private:
0114   enum {
0115     kPedestals,
0116     kPedestalWidths,
0117     kEffectivePedestals,
0118     kEffectivePedestalWidths,
0119     kGains,
0120     kGainWidths,
0121     kPFCuts,
0122     kQIEData,
0123     kQIETypes,
0124     kChannelQuality,
0125     kRespCorrs,
0126     kLUTCorrs,
0127     kPFCorrs,
0128     kTimeCorrs,
0129     kZSThresholds,
0130     kL1TriggerObjects,
0131     kElectronicsMap,
0132     kValidationCorrs,
0133     kLutMetadata,
0134     kRecoParams,
0135     kTimingParams,
0136     kLongRecoParams,
0137     kZDCLowGainFractions,
0138     kMCParams,
0139     kFlagHFDigiTimeParams,
0140     kFrontEndMap,
0141     kSiPMParameters,
0142     kTPChannelParameters
0143   };
0144   HcalDbHardcode dbHardcode;
0145   double iLumi;
0146   std::unique_ptr<HBHERecalibration> hb_recalibration;
0147   std::unique_ptr<HBHERecalibration> he_recalibration;
0148   std::unique_ptr<HFRecalibration> hf_recalibration;
0149   std::unordered_map<int, edm::ESGetToken<HcalTopology, HcalRecNumberingRecord>> topoTokens_;
0150   edm::ESGetToken<HBHEDarkening, HBHEDarkeningRecord> heDarkeningToken_;
0151   edm::ESGetToken<HBHEDarkening, HBHEDarkeningRecord> hbDarkeningToken_;
0152   bool switchGainWidthsForTrigPrims;
0153   bool setHEdsegm;
0154   bool setHBdsegm;
0155   bool useLayer0Weight;
0156   bool useIeta18depth1;
0157   bool testHEPlan1;
0158 };