1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
#include "HcalTimeSlewEP.h"
#include "CalibCalorimetry/HcalAlgos/interface/HcalTimeSlew.h"
#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
#include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
#include "FWCore/ParameterSet/interface/FileInPath.h"
#include "FWCore/Framework/interface/SourceFactory.h"
#include <string>
#include <vector>
#include <map>
#include <iostream>
HcalTimeSlewEP::HcalTimeSlewEP(const edm::ParameterSet& pset) {
setWhatProduced(this);
findingRecord<HcalTimeSlewRecord>();
//Two pset sets for M2/Simulation and M3
std::vector<edm::ParameterSet> p_TimeSlewM2 =
pset.getParameter<std::vector<edm::ParameterSet>>("timeSlewParametersM2");
std::vector<edm::ParameterSet> p_TimeSlewM3 =
pset.getParameter<std::vector<edm::ParameterSet>>("timeSlewParametersM3");
//loop over the VPSets
for (const auto& p_timeslew : p_TimeSlewM2) {
m2parameters_.push_back({static_cast<float>(p_timeslew.getParameter<double>("tzero")),
static_cast<float>(p_timeslew.getParameter<double>("slope")),
static_cast<float>(p_timeslew.getParameter<double>("tmax"))});
}
for (const auto& p_timeslew : p_TimeSlewM3) {
m3parameters_.push_back({p_timeslew.getParameter<double>("cap"),
p_timeslew.getParameter<double>("tspar0"),
p_timeslew.getParameter<double>("tspar1"),
p_timeslew.getParameter<double>("tspar2"),
p_timeslew.getParameter<double>("tspar0_siPM"),
p_timeslew.getParameter<double>("tspar1_siPM"),
p_timeslew.getParameter<double>("tspar2_siPM")});
}
}
HcalTimeSlewEP::~HcalTimeSlewEP() {}
void HcalTimeSlewEP::setIntervalFor(const edm::eventsetup::EventSetupRecordKey& iKey,
const edm::IOVSyncValue& iTime,
edm::ValidityInterval& oInterval) {
oInterval = edm::ValidityInterval(edm::IOVSyncValue::beginOfTime(), edm::IOVSyncValue::endOfTime());
}
void HcalTimeSlewEP::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
edm::ParameterSetDescription desc;
edm::ParameterSetDescription desc_M2;
desc_M2.add<double>("tzero");
desc_M2.add<double>("slope");
desc_M2.add<double>("tmax");
std::vector<edm::ParameterSet> default_M2(1);
desc.addVPSet("timeSlewParametersM2", desc_M2, default_M2);
edm::ParameterSetDescription desc_M3;
desc_M3.add<double>("cap");
desc_M3.add<double>("tspar0");
desc_M3.add<double>("tspar1");
desc_M3.add<double>("tspar2");
desc_M3.add<double>("tspar0_siPM");
desc_M3.add<double>("tspar1_siPM");
desc_M3.add<double>("tspar2_siPM");
std::vector<edm::ParameterSet> default_M3(1);
desc.addVPSet("timeSlewParametersM3", desc_M3, default_M3);
descriptions.addDefault(desc);
}
// ------------ method called to produce the data ------------
HcalTimeSlewEP::ReturnType HcalTimeSlewEP::produce(const HcalTimeSlewRecord& iRecord) {
ReturnType hcalTimeSlew = std::make_unique<HcalTimeSlew>();
//loop over the VPSets
for (const auto& p : m2parameters_) {
hcalTimeSlew->addM2ParameterSet(p.t0, p.m, p.tmaximum);
}
for (const auto& p : m3parameters_) {
hcalTimeSlew->addM3ParameterSet(p.cap, p.tspar0, p.tspar1, p.tspar2, p.tspar0_siPM, p.tspar1_siPM, p.tspar2_siPM);
}
return hcalTimeSlew;
}
DEFINE_FWK_EVENTSETUP_SOURCE(HcalTimeSlewEP);
|