File indexing completed on 2023-03-28 01:34:33
0001
0002
0003
0004
0005
0006
0007 #include <memory>
0008
0009 #include "FWCore/Framework/interface/ModuleFactory.h"
0010 #include "FWCore/Framework/interface/ESProducer.h"
0011 #include "FWCore/Framework/interface/ESHandle.h"
0012 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0013 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0014
0015 #include "RecoLocalTracker/Records/interface/SiStripClusterizerConditionsRcd.h"
0016
0017 #include "CalibFormats/SiStripObjects/interface/SiStripGain.h"
0018 #include "CalibFormats/SiStripObjects/interface/SiStripDetCabling.h"
0019 #include "CalibFormats/SiStripObjects/interface/SiStripClusterizerConditionsGPU.h"
0020
0021 using namespace stripgpu;
0022
0023 class SiStripClusterizerConditionsGPUESProducer : public edm::ESProducer {
0024 public:
0025 SiStripClusterizerConditionsGPUESProducer(const edm::ParameterSet&);
0026 ~SiStripClusterizerConditionsGPUESProducer() override {}
0027
0028 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0029
0030 using ReturnType = std::unique_ptr<SiStripClusterizerConditionsGPU>;
0031 ReturnType produce(const SiStripClusterizerConditionsRcd&);
0032
0033 private:
0034 edm::ESGetToken<SiStripGain, SiStripGainRcd> gainToken_;
0035 edm::ESGetToken<SiStripNoises, SiStripNoisesRcd> noisesToken_;
0036 edm::ESGetToken<SiStripQuality, SiStripQualityRcd> qualityToken_;
0037 };
0038
0039 SiStripClusterizerConditionsGPUESProducer::SiStripClusterizerConditionsGPUESProducer(const edm::ParameterSet& iConfig) {
0040 auto cc = setWhatProduced(this, iConfig.getParameter<std::string>("Label"));
0041
0042 gainToken_ = cc.consumesFrom<SiStripGain, SiStripGainRcd>();
0043 noisesToken_ = cc.consumesFrom<SiStripNoises, SiStripNoisesRcd>();
0044 qualityToken_ = cc.consumesFrom<SiStripQuality, SiStripQualityRcd>(
0045 edm::ESInputTag{"", iConfig.getParameter<std::string>("QualityLabel")});
0046 }
0047
0048 void SiStripClusterizerConditionsGPUESProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0049 edm::ParameterSetDescription desc;
0050 desc.add<std::string>("QualityLabel", "");
0051 desc.add<std::string>("Label", "");
0052 descriptions.add("SiStripClusterizerConditionsGPUESProducer", desc);
0053 }
0054
0055 SiStripClusterizerConditionsGPUESProducer::ReturnType SiStripClusterizerConditionsGPUESProducer::produce(
0056 const SiStripClusterizerConditionsRcd& iRecord) {
0057 auto gainsH = iRecord.getTransientHandle(gainToken_);
0058 const auto& noises = iRecord.get(noisesToken_);
0059 const auto& quality = iRecord.get(qualityToken_);
0060
0061 return std::make_unique<SiStripClusterizerConditionsGPU>(quality, gainsH.product(), noises);
0062 }
0063
0064 DEFINE_FWK_EVENTSETUP_MODULE(SiStripClusterizerConditionsGPUESProducer);