Ratpac-two
  • User’s Guide
  • Programmer’s Guide
  • Doxygen Code References
Ratpac-two
  • Ratpac-two: /home/docs/checkouts/readthedocs.org/user_builds/ratpac/checkouts/latest/src/db/include/RAT/DBLink.hh Source File
  • View page source

/home/docs/checkouts/readthedocs.org/user_builds/ratpac/checkouts/latest/src/db/include/RAT/DBLink.hh Source File

Ratpac-two: /home/docs/checkouts/readthedocs.org/user_builds/ratpac/checkouts/latest/src/db/include/RAT/DBLink.hh Source File
Ratpac-two
  • src
  • db
  • include
  • RAT
DBLink.hh
1 
37 #ifndef __RAT_DBLink__
38 #define __RAT_DBLink__
39 
40 #include <RAT/DB.hh>
41 #include <RAT/DBTable.hh>
42 #include <string>
43 #include <vector>
44 
45 namespace RAT {
46 
47 class DB;
48 
49 class DBLink {
50  public:
60  DBLink(DB *db, std::string tblname, std::string index, int currentRun = 1);
61 
67  ~DBLink();
68 
70  inline std::string GetName() const { return tblname; };
72  inline std::string GetIndex() const { return index; };
73 
76  void SetCurrentRun(int runNumber) { currentRun = runNumber; };
77 
83  int GetI(const std::string &name);
84 
90  double GetD(const std::string &name);
91 
97  std::string GetS(const std::string &name);
98 
104  bool GetZ(const std::string &name);
105 
111  std::vector<int> GetIArray(const std::string &name);
112 
118  std::vector<float> GetFArrayFromD(const std::string &name);
119  std::vector<float> DArrayToFArray(const std::vector<double> &input);
120 
126  std::vector<double> GetDArray(const std::string &name);
127 
133  std::vector<std::string> GetSArray(const std::string &name);
134 
140  std::vector<bool> GetZArray(const std::string &name);
141 
147  json::Value GetJSON(const std::string &name);
148 
155  template <class T>
156  T Get(const std::string &fieldname);
157 
158  // Used by DB class, do not use this yourself
159  void Unlink() { db = 0; };
160 
161  protected:
163  DB *db;
164 
166  std::string tblname;
167 
169  std::string index;
170 
172  int currentRun;
173 };
174 
175 template <class T>
176 T DBLink::Get(const std::string &fieldname) {
177  DBTable *tbl;
178  // First try user plane
179  tbl = db->GetUserTable(tblname, index);
180  // Then try the run plane
181  if (!tbl || tbl->GetFieldType(fieldname) == DBTable::NOTFOUND) {
182  tbl = db->GetRunTable(tblname, index, currentRun);
183  }
184  // Then try the default plane
185  if (!tbl || tbl->GetFieldType(fieldname) == DBTable::NOTFOUND) {
186  tbl = db->GetDefaultTable(tblname, index);
187  }
188  if (!tbl || tbl->GetFieldType(fieldname) == DBTable::NOTFOUND) {
189  throw DBNotFoundError(tblname, index, fieldname);
190  }
191 
192  // Make class explicit to satisfy Sun CC 5.3
193  T value = tbl->DBTable::Get<T>(fieldname);
194 
195  // Trace DB accesses
196  Log::TraceDBAccess(tblname, index, fieldname, value);
197 
198  return value;
199 }
200 
201 } // namespace RAT
202 
203 #endif
DB
RAT::DBLink
Definition: DBLink.hh:49
RAT::DBLink::tblname
std::string tblname
Definition: DBLink.hh:166
RAT::DBLink::GetJSON
json::Value GetJSON(const std::string &name)
Definition: DBLink.cc:57
RAT::DBLink::SetCurrentRun
void SetCurrentRun(int runNumber)
Definition: DBLink.hh:76
RAT::DBLink::GetFArrayFromD
std::vector< float > GetFArrayFromD(const std::string &name)
Definition: DBLink.cc:32
RAT::DBLink::GetSArray
std::vector< std::string > GetSArray(const std::string &name)
Definition: DBLink.cc:53
RAT::DBLink::Get
T Get(const std::string &fieldname)
Definition: DBLink.hh:176
RAT::DBLink::db
DB * db
Definition: DBLink.hh:159
RAT::DBLink::GetName
std::string GetName() const
Definition: DBLink.hh:70
RAT::DBLink::GetZArray
std::vector< bool > GetZArray(const std::string &name)
Definition: DBLink.cc:55
RAT::DBLink::GetDArray
std::vector< double > GetDArray(const std::string &name)
Definition: DBLink.cc:51
RAT::DBLink::DBLink
DBLink(DB *db, std::string tblname, std::string index, int currentRun=1)
Definition: DBLink.cc:9
RAT::DBLink::index
std::string index
Definition: DBLink.hh:169
RAT::DBLink::GetS
std::string GetS(const std::string &name)
Definition: DBLink.cc:26
RAT::DBLink::GetI
int GetI(const std::string &name)
Definition: DBLink.cc:22
RAT::DBLink::GetD
double GetD(const std::string &name)
Definition: DBLink.cc:24
RAT::DBLink::currentRun
int currentRun
Definition: DBLink.hh:172
RAT::DBLink::GetIndex
std::string GetIndex() const
Definition: DBLink.hh:72
RAT::DBLink::GetIArray
std::vector< int > GetIArray(const std::string &name)
Definition: DBLink.cc:30
RAT::DBLink::GetZ
bool GetZ(const std::string &name)
Definition: DBLink.cc:28
RAT::DBLink::~DBLink
~DBLink()
Definition: DBLink.cc:16
RAT::DBNotFoundError
Definition: DBTable.hh:275
RAT::DBTable
Definition: DBTable.hh:25
RAT::DBTable::GetFieldType
FieldType GetFieldType(std::string name) const
Definition: DBTable.cc:78
RAT::DBTable::NOTFOUND
@ NOTFOUND
Definition: DBTable.hh:81
RAT::DB
Definition: DB.hh:126
RAT::DB::GetUserTable
DBTable * GetUserTable(std::string tblname, std::string index)
Definition: DB.hh:282
RAT::DB::GetRunTable
DBTable * GetRunTable(std::string tblname, std::string index, int runNumber)
Definition: DB.hh:286
RAT::DB::GetDefaultTable
DBTable * GetDefaultTable(std::string tblname, std::string index)
Definition: DB.hh:292
RAT::Log::TraceDBAccess
static void TraceDBAccess(const std::string &table, const std::string &index, const std::string &field, int value)
Definition: Log.hh:258
json::Value
Definition: json.hh:59
RAT
Definition: CCCrossSecMessenger.hh:29

Generated by doxygen 1.9.1

© Copyright 2023, The Regents of the University of California, through Lawrence Berkeley National Laboratory,and Lawrence Livermore National Security, LLC (subject to receipt of any required approvals from the U.S. Dept.of Energy). All rights reserved..

Built with Sphinx using a theme provided by Read the Docs.