Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-28 01:34:33

0001 /**\class SiStripClusterizerConditionsGPUESProducer
0002  *
0003  * Create a GPU cache object for fast access to conditions needed by the SiStrip clusterizer
0004  *
0005  * @see SiStripClusterizerConditions
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);