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
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
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
0074 HcalTimeSlewEP::ReturnType HcalTimeSlewEP::produce(const HcalTimeSlewRecord& iRecord) {
0075 ReturnType hcalTimeSlew = std::make_unique<HcalTimeSlew>();
0076
0077
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);