HOPS
HOPS class reference
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 //initialization
20 #include "MHO_ParameterManager.hh"
21 
22 namespace hops
23 {
24 
33 //forward declare visitor
37 class MHO_FringeFitterVisitor;
38 
43 {
44  public:
46  {
48  fScanStore = data->GetScanDataStore();
50  fOperatorBuildManager = nullptr;
51  };
52 
54 
61 
68 
75 
82 
83  //should we expose these?
90 
97 
104 
105  //basic run scheme: configure, init, then while(!IsFinished() ){ pre-run, run, post-run }, then finalize
110  virtual void Configure() = 0;
111 
112  //TODO add a 'configure extension' function using visitor pattern to add things like pybind11/opencl etc.
117  virtual void Initialize() = 0;
118 
123  virtual void PreRun() = 0;
124 
131  virtual void Run() = 0;
132 
137  virtual void PostRun() = 0;
138 
145  virtual bool IsFinished() = 0;
146 
151  virtual void Finalize() = 0;
152 
159  virtual void Accept(MHO_FringeFitterVisitor* visitor) = 0;
160 
161  protected:
162 
163  //optional caching mechanism (stash the configured visibilities/weights)
164  //before they are modified by flagging/calibration/prefit operators
165  virtual void Cache(){};
166  virtual void Refresh(){};
167 
168  //data objects
170 
171  MHO_ParameterStore* fParameterStore; //stores various parameters using string keys
172  MHO_ScanDataStore* fScanStore; //provides access to data associated with this scan
173  MHO_ContainerStore* fContainerStore; //stores data containers for in-use data
174 
175  MHO_OperatorToolbox fOperatorToolbox; //stores the data operator objects
176 
177  //configuration/initialization managers
179 };
180 
181 
186 {
187  public:
190 
191  //pure virtual
198  virtual void Visit(MHO_FringeFitter* fitter) = 0;
199 };
200 
201 
202 
203 } // namespace hops
204 
205 #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
MHO_ParameterStore * GetParameterStore()
Getter for parameter store.
Definition: MHO_FringeData.hh:40
MHO_ScanDataStore * GetScanDataStore()
Getter for scan data store.
Definition: MHO_FringeData.hh:54
MHO_ContainerStore * GetContainerStore()
Getter for container store.
Definition: MHO_FringeData.hh:47
Class MHO_FringeFitterVisitor.
Definition: MHO_FringeFitter.hh:186
MHO_FringeFitterVisitor()
Definition: MHO_FringeFitter.hh:188
virtual void Visit(MHO_FringeFitter *fitter)=0
Function Visit.
virtual ~MHO_FringeFitterVisitor()
Definition: MHO_FringeFitter.hh:189
Class MHO_FringeFitter.
Definition: MHO_FringeFitter.hh:43
MHO_ScanDataStore * GetScanDataStore()
Getter for scan data store.
Definition: MHO_FringeFitter.hh:96
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: MHO_FringeFitter.hh:81
MHO_ParameterStore * GetParameterStore()
Getter for parameter store.
Definition: MHO_FringeFitter.hh:67
MHO_ParameterStore * fParameterStore
Definition: MHO_FringeFitter.hh:171
mho_json GetVex()
Getter for vex (ovex) data as JSON object.
Definition: MHO_FringeFitter.hh:89
MHO_OperatorBuilderManager * GetOperatorBuildManager()
Getter for ther operator build manager - only valid after 'Configure' is called.
Definition: MHO_FringeFitter.hh:103
MHO_ContainerStore * fContainerStore
Definition: MHO_FringeFitter.hh:173
MHO_FringeFitter(MHO_FringeData *data)
Definition: MHO_FringeFitter.hh:45
MHO_OperatorToolbox fOperatorToolbox
Definition: MHO_FringeFitter.hh:175
virtual void Cache()
Definition: MHO_FringeFitter.hh:165
MHO_FringeData * GetFringeData()
Getter for fringe data.
Definition: MHO_FringeFitter.hh:60
virtual ~MHO_FringeFitter()
Definition: MHO_FringeFitter.hh:53
MHO_ContainerStore * GetContainerStore()
Getter for container store.
Definition: MHO_FringeFitter.hh:74
MHO_FringeData * fFringeData
Definition: MHO_FringeFitter.hh:166
virtual void Refresh()
Definition: MHO_FringeFitter.hh:166
virtual void PreRun()=0
Function PreRun.
MHO_OperatorBuilderManager * fOperatorBuildManager
Definition: MHO_FringeFitter.hh:178
MHO_ScanDataStore * fScanStore
Definition: MHO_FringeFitter.hh:172
Manages all the various operator builders.
Definition: MHO_OperatorBuilderManager.hh:24
Class MHO_OperatorToolbox.
Definition: MHO_OperatorToolbox.hh:26
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: MHO_ChannelLabeler.hh:17