Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #include "HBHEDarkeningEP.h"
0002 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0003 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0004 #include "FWCore/ParameterSet/interface/FileInPath.h"
0005 #include "FWCore/Framework/interface/SourceFactory.h"
0006 
0007 #include <string>
0008 #include <vector>
0009 #include <map>
0010 
0011 HBHEDarkeningEP::HBHEDarkeningEP(const edm::ParameterSet& pset)
0012     : drdA_(pset.getParameter<double>("drdA")),
0013       drdB_(pset.getParameter<double>("drdB")),
0014       ieta_shift_(pset.getParameter<int>("ieta_shift")) {
0015   setWhatProduced(this);
0016   findingRecord<HBHEDarkeningRecord>();
0017 
0018   const std::vector<edm::ParameterSet>& p_dosemaps = pset.getParameter<std::vector<edm::ParameterSet>>("dosemaps");
0019   dosemaps_.reserve(p_dosemaps.size());
0020   for (const auto& p_dosemap : p_dosemaps) {
0021     dosemaps_.push_back({p_dosemap.getParameter<edm::FileInPath>("file"), p_dosemap.getParameter<int>("energy")});
0022   }
0023 
0024   //initialize years
0025   const std::vector<edm::ParameterSet>& p_years = pset.getParameter<std::vector<edm::ParameterSet>>("years");
0026   years_.reserve(p_years.size());
0027   for (const auto& p_year : p_years) {
0028     years_.emplace_back(p_year.getParameter<std::string>("year"),
0029                         p_year.getParameter<double>("intlumi"),
0030                         p_year.getParameter<double>("lumirate"),
0031                         p_year.getParameter<int>("energy"));
0032   }
0033 }
0034 
0035 HBHEDarkeningEP::~HBHEDarkeningEP() {}
0036 
0037 void HBHEDarkeningEP::setIntervalFor(const edm::eventsetup::EventSetupRecordKey& iKey,
0038                                      const edm::IOVSyncValue& iTime,
0039                                      edm::ValidityInterval& oInterval) {
0040   oInterval = edm::ValidityInterval(edm::IOVSyncValue::beginOfTime(), edm::IOVSyncValue::endOfTime());  //infinite
0041 }
0042 
0043 void HBHEDarkeningEP::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0044   edm::ParameterSetDescription desc;
0045   desc.add<int>("ieta_shift");
0046   desc.add<double>("drdA");
0047   desc.add<double>("drdB");
0048   edm::ParameterSetDescription desc_dosemaps;
0049   desc_dosemaps.add<int>("energy");
0050   desc_dosemaps.add<edm::FileInPath>("file");
0051   std::vector<edm::ParameterSet> default_dosemap(1);
0052   desc.addVPSet("dosemaps", desc_dosemaps, default_dosemap);
0053   edm::ParameterSetDescription desc_years;
0054   desc_years.add<std::string>("year");
0055   desc_years.add<double>("intlumi");
0056   desc_years.add<double>("lumirate");
0057   desc_years.add<int>("energy");
0058   std::vector<edm::ParameterSet> default_year(1);
0059   desc.addVPSet("years", desc_years, default_year);
0060 
0061   descriptions.addDefault(desc);
0062 }
0063 
0064 // ------------ method called to produce the data  ------------
0065 HBHEDarkeningEP::ReturnType HBHEDarkeningEP::produce(const HBHEDarkeningRecord& iRecord) {
0066   //initialize dose maps
0067   std::map<int, std::vector<std::vector<float>>> dosemaps;
0068   for (const auto& p_dosemap : dosemaps_) {
0069     dosemaps.emplace(p_dosemap.file_energy, HBHEDarkening::readDoseMap(p_dosemap.fp.fullPath()));
0070   }
0071 
0072   return std::make_unique<HBHEDarkening>(ieta_shift_, drdA_, drdB_, std::move(dosemaps), years_);
0073 }
0074 
0075 DEFINE_FWK_EVENTSETUP_SOURCE(HBHEDarkeningEP);