HOPS
HOPS class reference
Containers/include/MHO_FringeFitter.hh
Go to the documentation of this file.
1 #ifndef MHO_FringeFitter_HH__
2 #define MHO_FringeFitter_HH__
3 
4 //global messaging util
5 #include "MHO_Message.hh"
6 
7 //data/config passing classes
8 #include "MHO_ContainerStore.hh"
9 #include "MHO_FringeData.hh"
10 #include "MHO_JSONHeaderWrapper.hh"
11 #include "MHO_OperatorToolbox.hh"
12 #include "MHO_ParameterStore.hh"
13 
14 //needed to read hops files and extract objects from scan dir
15 #include "MHO_ScanDataStore.hh"
16 
17 namespace hops
18 {
19 
28 //forward declare visitor and operator build manager (MHO_Initialization library)
29 class MHO_FringeFitterVisitor;
30 class MHO_OperatorBuilderManager;
31 
35 class MHO_FringeFitter
36 {
37  public:
39  {
40  fParameterStore = data->GetParameterStore();
41  fScanStore = data->GetScanDataStore();
42  fContainerStore = data->GetContainerStore();
43  fOperatorBuildManager = nullptr;
44  };
45 
46  virtual ~MHO_FringeFitter(){
47  //if derived classes allocate an MHO_OperatorBuilderManager, they
48  //should call delete on them in their destructor
49  //delete fOperatorBuildManager;
50  };
51 
58 
65 
72 
79 
80  //should we expose these?
87 
94 
101 
102  //basic run scheme: configure, init, then while(!IsFinished() ){ pre-run, run, post-run }, then finalize
107  virtual void Configure() = 0;
108 
109  //TODO add a 'configure extension' function using visitor pattern to add things like pybind11/opencl etc.
114  virtual void Initialize() = 0;
115 
120  virtual void PreRun() = 0;
121 
128  virtual void Run() = 0;
129 
134  virtual void PostRun() = 0;
135 
142  virtual bool IsFinished() = 0;
143 
148  virtual void Finalize() = 0;
149 
156  virtual void Accept(MHO_FringeFitterVisitor* visitor) = 0;
157 
158  protected:
159  //optional caching mechanism (stash the configured visibilities/weights)
160  //before they are modified by flagging/calibration/prefit operators
161  virtual void Cache(){};
162  virtual void Refresh(){};
163 
164  //data objects
166 
167  MHO_ParameterStore* fParameterStore; //stores various parameters using string keys
168  MHO_ScanDataStore* fScanStore; //provides access to data associated with this scan
169  MHO_ContainerStore* fContainerStore; //stores data containers for in-use data
170  MHO_OperatorToolbox fOperatorToolbox; //stores the data operator objects
171 
172  //configuration/initialization managers
174 };
175 
179 class MHO_FringeFitterVisitor
180 {
181  public:
183 
185 
186  //pure virtual
193  virtual void Visit(MHO_FringeFitter* fitter) = 0;
194 };
195 
196 } // namespace hops
197 
198 #endif
nlohmann::json mho_json
Definition: MHO_JSONHeaderWrapper.hh:5
Class MHO_ContainerStore.
Definition: MHO_ContainerStore.hh:32
Class MHO_FringeData.
Definition: MHO_FringeData.hh:30
Class MHO_FringeFitterVisitor.
Definition: Calibration/include/MHO_FringeFitter.hh:189
MHO_FringeFitterVisitor()
Definition: Containers/include/MHO_FringeFitter.hh:182
virtual void Visit(MHO_FringeFitter *fitter)=0
Function Visit.
virtual ~MHO_FringeFitterVisitor()
Definition: Containers/include/MHO_FringeFitter.hh:184
Class MHO_FringeFitter.
Definition: Calibration/include/MHO_FringeFitter.hh:48
MHO_ScanDataStore * GetScanDataStore()
Getter for scan data store.
Definition: Containers/include/MHO_FringeFitter.hh:93
virtual void Run()=0
Function Run.
virtual void PostRun()=0
Function PostRun.
virtual void Accept(MHO_FringeFitterVisitor *visitor)=0
Function Accept: accept a visitor...pure virtual, must be implemented in derived class.
virtual void Finalize()=0
Function Finalize.
virtual void Configure()=0
Function Configure.
virtual bool IsFinished()=0
Function IsFinished.
virtual void Initialize()=0
Function Initialize.
MHO_OperatorToolbox * GetOperatorToolbox()
Getter for operator toolbox.
Definition: Containers/include/MHO_FringeFitter.hh:78
MHO_ScanDataStore * fScanStore
Definition: Calibration/include/MHO_FringeFitter.hh:176
MHO_ParameterStore * GetParameterStore()
Getter for parameter store.
Definition: Containers/include/MHO_FringeFitter.hh:64
mho_json GetVex()
Getter for vex (ovex) data as JSON object.
Definition: Containers/include/MHO_FringeFitter.hh:86
MHO_OperatorBuilderManager * GetOperatorBuildManager()
Getter for ther operator build manager - only valid after 'Configure' is called.
Definition: Containers/include/MHO_FringeFitter.hh:100
MHO_FringeFitter(MHO_FringeData *data)
Definition: Containers/include/MHO_FringeFitter.hh:38
MHO_OperatorBuilderManager * fOperatorBuildManager
Definition: Calibration/include/MHO_FringeFitter.hh:182
MHO_FringeData * fFringeData
Definition: Calibration/include/MHO_FringeFitter.hh:170
MHO_OperatorToolbox fOperatorToolbox
Definition: Calibration/include/MHO_FringeFitter.hh:179
virtual void Cache()
Definition: Containers/include/MHO_FringeFitter.hh:161
MHO_FringeData * GetFringeData()
Getter for fringe data.
Definition: Containers/include/MHO_FringeFitter.hh:57
virtual ~MHO_FringeFitter()
Definition: Containers/include/MHO_FringeFitter.hh:46
MHO_ParameterStore * fParameterStore
Definition: Calibration/include/MHO_FringeFitter.hh:175
MHO_ContainerStore * GetContainerStore()
Getter for container store.
Definition: Containers/include/MHO_FringeFitter.hh:71
virtual void Refresh()
Definition: Containers/include/MHO_FringeFitter.hh:162
virtual void PreRun()=0
Function PreRun.
MHO_ContainerStore * fContainerStore
Definition: Calibration/include/MHO_FringeFitter.hh:177
Manages all the various operator builders.
Definition: MHO_OperatorBuilderManager.hh:26
Class MHO_OperatorToolbox.
Definition: MHO_OperatorToolbox.hh:28
Class MHO_ParameterStore.
Definition: MHO_ParameterStore.hh:52
Class to catalog and organize data files that are associated with a single scan, and handle retrieval...
Definition: MHO_ScanDataStore.hh:28
mho_json GetRootFileData() const
Getter for root file data (as json)
Definition: MHO_ScanDataStore.cc:181
Definition: fit_gsl.h:54
Definition: MHO_AdhocFlagging.hh:18