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

Ratpac-two: /home/docs/checkouts/readthedocs.org/user_builds/ratpac/checkouts/latest/src/fit/mimir/include/mimir/FitStrategy.hh Source File
Ratpac-two
FitStrategy.hh
1 #pragma once
2 #include <RAT/DB.hh>
3 #include <RAT/DS/FitResult.hh>
4 #include <RAT/FitterInputHandler.hh>
5 
6 #include "mimir/ParamSet.hh"
7 
8 namespace Mimir {
9 class FitStrategy {
10  public:
11  FitStrategy() = default;
12  virtual ~FitStrategy() = default;
13 
14  // Configure the fit strategy with a database link
15  virtual bool Configure(RAT::DBLinkPtr db_link) { return true; }
16 
17  ParamSet ConstructSeedFromInputHandler() {
18  ParamSet params;
19  std::vector<double> xyzt = {0, 0, 0, 0};
20  if (input_handler->ValidSeedPosition()) {
21  TVector3 seed_pos = input_handler->GetSeedPosition();
22  xyzt[0] = seed_pos.X();
23  xyzt[1] = seed_pos.Y();
24  xyzt[2] = seed_pos.Z();
25  }
26  if (input_handler->ValidSeedTime()) {
27  xyzt[3] = input_handler->GetSeedTime();
28  }
29  params.position_time.set_values(xyzt);
30  if (input_handler->ValidSeedDirection()) {
31  TVector3 seed_dir = input_handler->GetSeedDirection();
32  params.direction.set_values({seed_dir.X(), seed_dir.Y(), seed_dir.Z()});
33  }
34  if (input_handler->ValidSeedEnergy()) {
35  params.energy.set_values({input_handler->GetSeedEnergy()});
36  }
37  return params;
38  }
39 
40  // Execute the fit strategy
41  ParamSet Execute() {
42  ParamSet params = ConstructSeedFromInputHandler();
43  Execute(params);
44  return params;
45  }
46 
47  virtual void Execute(ParamSet &params) = 0;
48 
49  virtual void SetInputHandler(RAT::FitterInputHandler *handler) { input_handler = handler; }
50 
51  void SetName(const std::string &_name) { name = _name; }
52 
53  const std::string &GetName() const { return name; }
54 
55  protected:
56  RAT::FitterInputHandler *input_handler;
57  std::string name;
58 };
59 
60 } // namespace Mimir
Definition: FitStrategy.hh:9
Definition: FitterInputHandler.hh:26
bool ValidSeedPosition(const std::string &_fitter_name="") const
Definition: FitterInputHandler.hh:97
TVector3 GetSeedDirection(const std::string &_fitter_name="") const
Definition: FitterInputHandler.hh:146
double GetSeedTime(const std::string &_fitter_name="") const
Definition: FitterInputHandler.hh:113
bool ValidSeedDirection(const std::string &_fitter_name="") const
Definition: FitterInputHandler.hh:164
bool ValidSeedTime(const std::string &_fitter_name="") const
Definition: FitterInputHandler.hh:131
TVector3 GetSeedPosition(const std::string &_fitter_name="") const
Definition: FitterInputHandler.hh:79
Definition: ParamSet.hh:56