Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #include "HcalTimeSlewEP.h"
0002 #include "CalibCalorimetry/HcalAlgos/interface/HcalTimeSlew.h"
0003 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0004 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0005 #include "FWCore/ParameterSet/interface/FileInPath.h"
0006 #include "FWCore/Framework/interface/SourceFactory.h"
0007 
0008 #include <string>
0009 #include <vector>
0010 #include <map>
0011 #include <iostream>
0012 
0013 HcalTimeSlewEP::HcalTimeSlewEP(const edm::ParameterSet& pset) {
0014   setWhatProduced(this);
0015   findingRecord<HcalTimeSlewRecord>();
0016 
0017   //Two pset sets for M2/Simulation and M3
0018   std::vector<edm::ParameterSet> p_TimeSlewM2 =
0019       pset.getParameter<std::vector<edm::ParameterSet>>("timeSlewParametersM2");
0020   std::vector<edm::ParameterSet> p_TimeSlewM3 =
0021       pset.getParameter<std::vector<edm::ParameterSet>>("timeSlewParametersM3");
0022 
0023   //loop over the VPSets
0024   for (const auto& p_timeslew : p_TimeSlewM2) {
0025     m2parameters_.push_back({static_cast<float>(p_timeslew.getParameter<double>("tzero")),
0026                              static_cast<float>(p_timeslew.getParameter<double>("slope")),
0027                              static_cast<float>(p_timeslew.getParameter<double>("tmax"))});
0028   }
0029 
0030   for (const auto& p_timeslew : p_TimeSlewM3) {
0031     m3parameters_.push_back({p_timeslew.getParameter<double>("cap"),
0032                              p_timeslew.getParameter<double>("tspar0"),
0033                              p_timeslew.getParameter<double>("tspar1"),
0034                              p_timeslew.getParameter<double>("tspar2"),
0035                              p_timeslew.getParameter<double>("tspar0_siPM"),
0036                              p_timeslew.getParameter<double>("tspar1_siPM"),
0037                              p_timeslew.getParameter<double>("tspar2_siPM")});
0038   }
0039 }
0040 
0041 HcalTimeSlewEP::~HcalTimeSlewEP() {}
0042 
0043 void HcalTimeSlewEP::setIntervalFor(const edm::eventsetup::EventSetupRecordKey& iKey,
0044                                     const edm::IOVSyncValue& iTime,
0045                                     edm::ValidityInterval& oInterval) {
0046   oInterval = edm::ValidityInterval(edm::IOVSyncValue::beginOfTime(), edm::IOVSyncValue::endOfTime());
0047 }
0048 
0049 void HcalTimeSlewEP::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0050   edm::ParameterSetDescription desc;
0051 
0052   edm::ParameterSetDescription desc_M2;
0053   desc_M2.add<double>("tzero");
0054   desc_M2.add<double>("slope");
0055   desc_M2.add<double>("tmax");
0056   std::vector<edm::ParameterSet> default_M2(1);
0057   desc.addVPSet("timeSlewParametersM2", desc_M2, default_M2);
0058 
0059   edm::ParameterSetDescription desc_M3;
0060   desc_M3.add<double>("cap");
0061   desc_M3.add<double>("tspar0");
0062   desc_M3.add<double>("tspar1");
0063   desc_M3.add<double>("tspar2");
0064   desc_M3.add<double>("tspar0_siPM");
0065   desc_M3.add<double>("tspar1_siPM");
0066   desc_M3.add<double>("tspar2_siPM");
0067   std::vector<edm::ParameterSet> default_M3(1);
0068   desc.addVPSet("timeSlewParametersM3", desc_M3, default_M3);
0069 
0070   descriptions.addDefault(desc);
0071 }
0072 
0073 // ------------ method called to produce the data  ------------
0074 HcalTimeSlewEP::ReturnType HcalTimeSlewEP::produce(const HcalTimeSlewRecord& iRecord) {
0075   ReturnType hcalTimeSlew = std::make_unique<HcalTimeSlew>();
0076 
0077   //loop over the VPSets
0078   for (const auto& p : m2parameters_) {
0079     hcalTimeSlew->addM2ParameterSet(p.t0, p.m, p.tmaximum);
0080   }
0081 
0082   for (const auto& p : m3parameters_) {
0083     hcalTimeSlew->addM3ParameterSet(p.cap, p.tspar0, p.tspar1, p.tspar2, p.tspar0_siPM, p.tspar1_siPM, p.tspar2_siPM);
0084   }
0085 
0086   return hcalTimeSlew;
0087 }
0088 
0089 DEFINE_FWK_EVENTSETUP_SOURCE(HcalTimeSlewEP);