/home/docs/checkouts/readthedocs.org/user_builds/ratpac/checkouts/stable/src/fit/mimir/include/mimir/Cost.hh Source File

Ratpac-two: /home/docs/checkouts/readthedocs.org/user_builds/ratpac/checkouts/stable/src/fit/mimir/include/mimir/Cost.hh Source File
Ratpac-two
Cost.hh
1 #pragma once
2 #include <RAT/DB.hh>
3 #include <RAT/FitterInputHandler.hh>
4 #include <RAT/Log.hh>
5 #include <mimir/Common.hh>
6 #include <mimir/ParamSet.hh>
7 
8 namespace Mimir {
9 
10 class Cost {
11  public:
12  Cost() = default;
13  virtual bool Configure(RAT::DBLinkPtr db_link) = 0;
14  virtual double operator()(const ParamSet& params) const = 0;
15 
16  virtual void AddHits(const int pmtid, const RAT::FitterInputHandler& input_handler) {
17  std::vector<double> times = input_handler.GetTimes(pmtid);
18  std::vector<double> charges = input_handler.GetCharges(pmtid);
19  if (times.size() != charges.size()) {
20  RAT::Log::Die("mimir::Cost: GetTimes and GetCharges returned vectors of different sizes for PMT " +
21  std::to_string(pmtid) + ".");
22  }
23  for (size_t i = 0; i < times.size(); ++i) {
24  hit_pmtids.push_back(pmtid);
25  hit_times.push_back(times[i]);
26  hit_charges.push_back(charges[i]);
27  }
28  }
29 
30  virtual void AddAllHits(const RAT::FitterInputHandler& input_handler) {
31  std::vector<int> pmtids = input_handler.GetAllHitPMTIDs();
32  for (int pmtid : pmtids) {
33  AddHits(pmtid, input_handler);
34  }
35  }
36 
37  virtual void ClearHits() {
38  hit_pmtids.clear();
39  hit_times.clear();
40  hit_charges.clear();
41  }
42 
43  const std::string GetName() const { return name; }
44 
45  void SetName(const std::string& _name) { name = _name; }
46 
47  protected:
48  std::vector<int> hit_pmtids;
49  std::vector<double> hit_times;
50  std::vector<double> hit_charges;
51  std::string name;
52 };
53 
54 } // namespace Mimir
Definition: Cost.hh:10
Definition: FitterInputHandler.hh:26
const std::vector< Int_t > & GetAllHitPMTIDs() const
Get PMTIDs for all pmts in the event. PMT will not be in the list if it never created a hit on DS::PM...
Definition: FitterInputHandler.hh:229
std::vector< double > GetCharges(Int_t id) const
Get the charge of each hit registered on a PMT. To get the integrated charge a PMT,...
Definition: FitterInputHandler.hh:279
std::vector< double > GetTimes(Int_t id) const
Get the time of each hit registered on a PMT. To get the time of only the first hit,...
Definition: FitterInputHandler.hh:330
static void Die(std::string message, int return_code=1)
Definition: Log.cc:90
Definition: ParamSet.hh:56