6 #ifndef __RAT_DS_WaveformAnalysisResult__
7 #define __RAT_DS_WaveformAnalysisResult__
13 #include <RAT/WaveformUtil.hh>
30 virtual size_t AddPE(Double_t time, Double_t charge, std::map<std::string, Double_t> fom = {}) {
31 Double_t time_corrected = (time == WaveformUtil::INVALID) ? time : time - time_offset;
32 size_t insertion_index = std::upper_bound(times.begin(), times.end(), time_corrected) - times.begin();
33 times.insert(times.begin() + insertion_index, time_corrected);
34 charges.insert(charges.begin() + insertion_index, charge);
35 for (
auto const& kv : fom) {
36 std::vector<Double_t>& fom_array = figures_of_merit[kv.first];
37 fom_array.insert(fom_array.begin() + insertion_index, kv.second);
39 return insertion_index;
41 virtual void setTimeOffset(Double_t _offset) { time_offset = _offset; }
42 virtual Double_t getTimeOffset() {
return time_offset; }
43 virtual Double_t getTime(
size_t idx) {
return times.at(idx); }
44 virtual Double_t getCharge(
size_t idx) {
return charges.at(idx); }
45 virtual Double_t getFOM(std::string key,
size_t idx) {
return figures_of_merit.at(key).at(idx); }
46 virtual int getNPEs() {
return times.size(); }
48 virtual const std::vector<Double_t>& getTimes() {
return times; }
49 virtual const std::vector<Double_t>& getCharges() {
return charges; }
54 std::vector<Double_t> times;
55 std::vector<Double_t> charges;
56 std::map<std::string, std::vector<Double_t>> figures_of_merit;
Definition: CCCrossSecMessenger.hh:29