otsdaq  v2_04_01
IterateTable.h
1 #ifndef _ots_IterateTable_h_
2 #define _ots_IterateTable_h_
3 
4 #include "otsdaq-core/TableCore/TableBase.h"
5 
6 namespace ots
7 {
8 class IterateTable : public TableBase
9 {
10  public:
11  IterateTable(void);
12  virtual ~IterateTable(void);
13 
14  // Methods
15  void init(ConfigurationManager* configManager);
16 
17  // Getters
18 
20  {
21  std::string table_;
22  std::string UID_;
23  };
24 
25  struct Command
26  {
27  void addTarget() { targets_.push_back(CommandTarget()); }
28  std::string type_;
29  std::vector<CommandTarget> targets_;
30  std::map<std::string /*param name*/, std::string /*param value*/> params_;
31  };
32 
33  std::vector<IterateTable::Command> getPlanCommands(
34  ConfigurationManager* configManager, const std::string& plan) const;
35 
36  static const std::string COMMAND_BEGIN_LABEL;
37  static const std::string COMMAND_CHOOSE_FSM;
38  static const std::string COMMAND_CONFIGURE_ACTIVE_GROUP;
39  static const std::string COMMAND_CONFIGURE_ALIAS;
40  static const std::string COMMAND_CONFIGURE_GROUP;
41  static const std::string COMMAND_EXECUTE_FE_MACRO;
42  static const std::string COMMAND_EXECUTE_MACRO;
43  static const std::string COMMAND_MODIFY_ACTIVE_GROUP;
44  static const std::string COMMAND_REPEAT_LABEL;
45  static const std::string COMMAND_RUN;
46 
47  static const std::string ITERATE_TABLE;
48  static const std::string PLAN_TABLE;
49  static const std::string TARGET_TABLE;
50 
51  static const std::map<std::string, std::string> commandToTableMap_;
52  static std::map<std::string, std::string> createCommandToTableMap()
53  {
54  std::map<std::string, std::string> m;
55  m[COMMAND_BEGIN_LABEL] = "IterationCommandBeginLabelTable";
56  m[COMMAND_CHOOSE_FSM] = "IterationCommandChooseFSMTable";
57  m[COMMAND_CONFIGURE_ACTIVE_GROUP] = ""; // no parameters
58  m[COMMAND_CONFIGURE_ALIAS] = "IterationCommandConfigureAliasTable";
59  m[COMMAND_CONFIGURE_GROUP] = "IterationCommandConfigureGroupTable";
60  m[COMMAND_EXECUTE_FE_MACRO] = "IterationCommandExecuteFEMacroTable";
61  m[COMMAND_EXECUTE_MACRO] = "IterationCommandExecuteMacroTable";
62  m[COMMAND_MODIFY_ACTIVE_GROUP] = "IterationCommandModifyGroupTable";
63  m[COMMAND_REPEAT_LABEL] = "IterationCommandRepeatLabelTable";
64  m[COMMAND_RUN] = "IterationCommandRunTable";
65  return m;
66  }
67 
69  {
70  const std::string Label_ = "Label";
71  } commandBeginLabelParams_;
72  static struct CommandChooseFSMParams
73  {
74  const std::string NameOfFSM_ = "NameOfStateMachine"; // by default ""
75  } commandChooseFSMParams_;
77  {
78  // no parameters
79  } commandConfigureActiveParams_;
81  {
82  const std::string SystemAlias_ = "SystemAlias";
83  } commandConfigureAliasParams_;
85  {
86  const std::string GroupName_ = "GroupName";
87  const std::string GroupKey_ = "GroupKey";
88  } commandConfigureGroupParams_;
89  static struct CommandExecuteMacroParams // treat FE and Macro the same
90  {
91  // targets
92  const std::string MacroName_ = "MacroName";
93  const std::string MacroParameterLink_ = "LinkToMacroDimensionalLoopTable";
94  const std::string EnableSavingOutput_ = "EnableSavingOutputsToFile";
95  const std::string OutputFilePath_ = "OutputFilePath";
96  const std::string OutputFileRadix_ = "OutputFileRadix";
97 
98  const std::string MacroArgumentString_ = "MacroArgumentString";
99 
100  // macro parameters
101  } commandExecuteMacroParams_;
103  {
104  // targets
105  const std::string DoTrackGroupChanges_ = "DoTrackGroupChanges";
106  const std::string RelativePathToField_ = "RelativePathToField";
107  const std::string FieldStartValue_ = "FieldStartValue";
108  const std::string FieldIterationStepSize_ = "FieldIterationStepSize";
109  } commandModifyActiveParams_;
111  {
112  const std::string Label_ = "Label";
113  const std::string NumberOfRepetitions_ = "NumberOfRepetitions";
114  } commandRepeatLabelParams_;
115  static struct CommandRunParams
116  {
117  const std::string WaitOnRunningThreads_ = "WaitForAllFrontEndsRunningThread";
118  const std::string DurationInSeconds_ = "DurationInSeconds";
119  } commandRunParams_;
120 
121  // for targets
122  static struct TargetParams
123  {
124  const std::string Tables_ = "CSVTargetTables";
125  const std::string UIDs_ = "CSVTargetUIDs";
126  } targetParams_;
127  static struct CommandTargetColumns
128  {
129  const std::string TargetsLink_ = "LinkToTargets";
130  const std::string TargetsLinkGroupID_ = "LinkToTargetsGroupID";
131 
132  } commandTargetCols_;
133  static struct TargetTableColumns
134  {
135  const std::string GroupID_ = "IterationTargetGroupID";
136  const std::string TargetLink_ = "LinkToTarget";
137  const std::string TargetLinkUID_ = "LinkToTargetUID";
138  } targetCols_;
139 
140  // for macro dimensional loop parameters
142  {
143  const std::string Priority_ = "DimensionalLoopPriority";
144  const std::string NumberOfIterations_ = "NumberOfIterations";
145  const std::string ParamLink_ = "LinkToDimensionalLoopParameterTable";
146  } macroDimLoopCols_;
148  {
149  const std::string Name_ = "ParameterName";
150  const std::string Value_ = "ParameterInitialValue";
151  const std::string Step_ = "ParameterStepSize";
152 
153  } macroParamCols_;
154 
155  // Table hierarchy is as follows:
156  // Iterate
157  // |- Plan
158  // |-Command Type 1
159  // |-Command Type 2 ...
160  // |-Command Type n
161 
162  // Column names
163 
164  static struct IterateTableColumns
165  {
166  const std::string PlanLink_ = "LinkToIterationPlanTable";
167  } iterateTableCols_;
168 
169  static struct PlanTableColumns
170  {
171  const std::string Status_ = TableViewColumnInfo::COL_NAME_STATUS;
172  const std::string GroupID_ = "IterationPlanGroupID";
173  const std::string CommandLink_ = "LinkToCommandUID";
174  const std::string CommandType_ = "CommandType";
175  } planTableCols_;
176 };
177 } // namespace ots
178 #endif