FRIBParallelanalysis  1.0
FrameworkforMPIParalleldataanalysisatFRIB
MPIParametersToParametersWorker.h
Go to the documentation of this file.
1 /*
2  This software is Copyright by the Board of Trustees of Michigan
3  State University (c) Copyright 2017.
4 
5  You may use this software under the terms of the GNU public license
6  (GPL). The terms of this license are described at:
7 
8  http://www.gnu.org/licenses/gpl.txt
9 
10  Authors:
11  Ron Fox
12  Giordano Cerriza
13  FRIB
14  Michigan State University
15  East Lansing, MI 48824-1321
16 */
17 
21 #ifndef MPIPARAMETERSTOPARAMETERSWORKER_h
22 #define MPIPARAMETERSTOPARAMETERSWORKER_h
23 #include <vector>
24 #include <map>
25 #include <cstdint>
26 
27 namespace frib {
28  namespace analysis {
29  class AbstractApplication;
30  class CTreeParameter;
31 
32  struct _FRIB_MPI_ParameterDef;
33  typedef _FRIB_MPI_ParameterDef
34  FRIB_MPI_ParameterDef, *pFRIB_MPI_ParameterDef;
35 
36  struct _FRIB_MPI_VariableDef;
37  typedef _FRIB_MPI_VariableDef
38  FRIB_MPI_VariableDef, *pFRIB_MPI_VariableDef;
39 
40  struct _FRIB_MPI_Parameter_Value;
41  typedef _FRIB_MPI_Parameter_Value
42  FRIB_MPI_Parameter_Value, *pFRIB_MPI_Parameter_Value;
43 
44 
76  public:
77  typedef std::pair<std::string, double> VariableInfo; //units/value
78  private:
79  std::map<std::string, VariableInfo> m_variableMap;
80  std::vector<CTreeParameter*> m_parameterMap;
81 
82  int m_argc;
83  char** m_argv;
84  AbstractApplication* m_pApp;
85  public:
87  int argc, char** argv, AbstractApplication* pApp
88  );
90 
91  virtual void operator()();
92  virtual void process() = 0;
93  protected:
94  VariableInfo* getVariable(const char* pVarName);
95  void loadVariable(const char* pVarName);
96  std::vector<std::string> getVariableNames();
97  private:
98  void receiveParameterDefinitions();
99  void receiveVariableDefinitions();
100  void receiveEvents();
101 
102  void loadTreeParameterMap(
103  const std::vector<FRIB_MPI_ParameterDef>& params
104  );
105  void loadVariableMap(
106  const std::vector<FRIB_MPI_VariableDef>& vars
107  );
108  void loadTreeParameters(
109  const std::vector<FRIB_MPI_Parameter_Value>& params
110  );
111  void sendEventToFarmer(std::uint64_t trigger);
112  void sendEndToFarmer();
113 
114  };
115  }
116 }
117 
118 #endif
Definition: AbstractApplication.h:102
Definition: MPIParametersToParametersWorker.h:75
void loadVariable(const char *pVarName)
Definition: MPIParametersToParametersWorker.cpp:99
virtual ~CMPIParametersToParametersWorker()
Definition: MPIParametersToParametersWorker.cpp:48
CMPIParametersToParametersWorker(int argc, char **argv, AbstractApplication *pApp)
Definition: MPIParametersToParametersWorker.cpp:39
virtual void operator()()
Definition: MPIParametersToParametersWorker.cpp:61
VariableInfo * getVariable(const char *pVarName)
Definition: MPIParametersToParametersWorker.cpp:80
Definition: AbstractApplication.cpp:30
std::vector< std::string > getVariableNames()
Definition: MPIParametersToParametersWorker.cpp:119