DP3
ParmSet.h
Go to the documentation of this file.
1 // ParmSet.h: Set of parameters to be used
2 //
3 // Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
4 // SPDX-License-Identifier: GPL-3.0-or-later
5 
9 
10 #ifndef LOFAR_PARMDB_PARMSET_H
11 #define LOFAR_PARMDB_PARMSET_H
12 
13 #include <casacore/casa/Arrays/Matrix.h>
14 
15 #include <map>
16 
17 namespace dp3 {
18 namespace parmdb {
19 
20 class ParmDB;
21 class ParmValueSet;
22 class Box;
23 
25 typedef unsigned int ParmId;
26 
29 
31 class ParmSet {
32  public:
36 
42  ParmId addParm(ParmDB&, const std::string& name);
43 
45  bool isInParmDB(ParmId parmid) const {
46  return itsParms[parmid].getNameId() >= 0;
47  }
48 
55 
57  size_t size() const { return itsParms.size(); }
58 
61  ParmId find(const std::string& name) const;
62 
64  const std::vector<ParmDB*> getDBs() const { return itsDBs; }
65 
70  void getValues(std::vector<ParmValueSet>&, const Box& workDomain) const;
71 
75  void write(unsigned int parmId, ParmValueSet&);
76 
78  void clear();
79 
80  private:
82  void rescale(ParmValueSet& pset, const Box& newDomain) const;
83 
85  class ParmKey {
86  public:
88  ParmKey(ParmDB* parmdb, const std::string& name, int nameId, ParmId parmId)
89  : itsParmDB(parmdb),
90  itsName(name),
91  itsNameId(nameId),
92  itsParmId(parmId) {}
93 
95  const std::string& getName() const { return itsName; }
96 
99  ParmDB* getParmDBPtr() { return itsParmDB; }
100  const ParmDB* getParmDBPtr() const { return itsParmDB; }
102 
107  int& getNameId() { return itsNameId; }
108  int getNameId() const { return itsNameId; }
110 
112  ParmId getParmId() const { return itsParmId; }
113 
114  private:
115  ParmDB* itsParmDB;
116  std::string itsName;
117  int itsNameId;
118  ParmId itsParmId;
119  };
120 
121  std::vector<ParmDB*> itsDBs;
122  std::vector<ParmKey> itsParms;
123  std::map<std::string, int> itsNames;
124 };
125 
127 
128 } // namespace parmdb
129 } // namespace dp3
130 
131 #endif
Class representing a 2-dim box.
Definition: Box.h:36
Envelope class for a table holding parameters.
Definition: ParmDB.h:159
Set of parameters to be used.
Definition: ParmSet.h:31
const std::vector< ParmDB * > getDBs() const
Get the ParmDBs used in the ParmSet.
Definition: ParmSet.h:64
ParmId addParm(ParmDB &, const std::string &name)
ParmId find(const std::string &name) const
void clear()
Clear the ParmSet.
void write(unsigned int parmId, ParmValueSet &)
size_t size() const
Get the nr of parameters.
Definition: ParmSet.h:57
bool isInParmDB(ParmId parmid) const
Does the parm already exist in the ParmDB?
Definition: ParmSet.h:45
void getValues(std::vector< ParmValueSet > &, const Box &workDomain) const
A class holding information of multiple domains of a parameter. ParmValueSet holds the information of...
Definition: ParmValue.h:146
unsigned int ParmId
Define the type of a parmId.
Definition: ParmSet.h:22
This file has generic helper routines for testing steps.
Definition: AntennaConfig.h:53