Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 09:21:10

0001 ///////////////////////////////////////////////////////////////
0002 //
0003 // SpinDBOutput class
0004 // Author      : D. Loomis, D. Neff (from Y. Fukao PHENIX class)
0005 // Description : Utility to read data from spin database
0006 // Created     : 2024-05-12
0007 //
0008 //
0009 ///////////////////////////////////////////////////////////////
0010 
0011 #ifndef USPIN_SPINDBOUTPUT_H
0012 #define USPIN_SPINDBOUTPUT_H
0013 
0014 #include <map>
0015 #include <memory>  // for unique_ptr
0016 #include <string>
0017 #include <vector>
0018 
0019 namespace odbc
0020 {
0021   class Connection;
0022   class Statement;
0023   class ResultSet;
0024 };  // namespace odbc
0025 
0026 class SpinDBContent;
0027 
0028 class SpinDBOutput
0029 {
0030  public:
0031   SpinDBOutput() { Initialize(); }
0032   SpinDBOutput(const char *user)
0033   {
0034     Initialize();
0035     SetUserName(user);
0036   }
0037   virtual ~SpinDBOutput() = default;
0038   void Initialize();
0039   void SetUserName(const std::string &user)
0040   {
0041     user_name = user;
0042     return;
0043   }
0044   void SetDBName(const std::string &dbname);
0045   void SetTableName(const std::string &tname);
0046   int PrintDBColumn();
0047   int PrintDBRawContent(int runnum);
0048   int PrintDBRawContent(int runnum, int qa_level);
0049   int CheckRunRow(int runnum);
0050   int CheckRunRow(int runnum, int qa_level);
0051   int CheckRunRowStore(int runnum);
0052   int StoreDBContent(int run1, int run2);
0053   int StoreDBContent(int run1, int run2, int qa_level);
0054   void ClearDBContent();
0055   int GetDBContent(SpinDBContent *&spin_cont, int runnum);
0056   int GetDBContent(SpinDBContent *&spin_cont, int runnum, int qa_level);
0057   int GetDBContentStore(SpinDBContent *&spin_cont, int runnum);
0058   static int CopyDBContent(SpinDBContent &spin_cont, SpinDBContent &spin_cont_copy);
0059   int GetDefaultQA(int runnum);
0060   void Verbosity(int verbose = 0) { verbosity = verbose; }
0061 
0062  private:
0063   static constexpr int ERROR_VALUE{-999};
0064 
0065   int verbosity{0};
0066 
0067   std::string db_name;
0068   std::string user_name;
0069   std::string table_name;
0070 
0071   std::map<int, std::unique_ptr<SpinDBContent>> spin_cont_store;
0072 
0073   odbc::Connection *ConnectDB(void);
0074   int GetDBContent(SpinDBContent &spin_cont, odbc::ResultSet *rs);
0075   int GetArray(odbc::ResultSet *rs, const std::string &name, std::vector<std::string> &value) const;
0076   int GetArray(odbc::ResultSet *rs, const std::string &name, float *value, int nvalue);
0077   int GetArray(odbc::ResultSet *rs, const std::string &name, unsigned int *value, int nvalue);
0078   int GetArray(odbc::ResultSet *rs, const std::string &name, int *value, int nvalue);
0079   int GetArray(odbc::ResultSet *rs, const std::string &name, long long *value, int nvalue);
0080 };
0081 
0082 #endif /* USPIN_SPINDBOUTPUT_H */