00001
00002 #ifndef _QAPOLLO_DB_BASE_HH_
00003 #define _QAPOLLO_DB_BASE_HH_
00004
00005 #include <string>
00006
00007 #include "QDbDefs.hh"
00008 #include "QCuore.hh"
00009 #include "QDb.hh"
00010 #include "QApolloDbCache.hh"
00011
00045 class QApolloDbBase : public QDb {
00046 public:
00047
00048 virtual ~QApolloDbBase();
00049
00050 private:
00051
00052 enum EnvVarName_t {
00053 DbHost_s,
00054 DbPort_s,
00055 DbUser_s,
00056 DbPwd_s,
00057 DbName_s
00058 };
00059
00060 enum DbMode_t {
00061 UndefMode_s = 0,
00062 MasterMode_s = 1L << 1,
00063 TuningMode_s = 1L << 2,
00065 GuiMode_s = 1L << 3,
00067 ReadMode_s = 1L << 4
00068 };
00069
00073 QApolloDbBase();
00074
00075
00077 static QApolloDbBase& Get();
00078
00083 inline bool Undefined() const { return (UndefMode_s == fMode); }
00084
00089 bool Reset(unsigned short settingsBasket, unsigned int runNumber);
00090
00095 bool Reset(unsigned short settingsBasket);
00096
00101 bool Reset();
00102
00107 bool ResetRun();
00108
00109
00110
00112 const std::map<unsigned short,std::string>& CrateMap() const
00113 { return fActiveCrates; }
00114
00115
00123 short GetListOfChannels(std::vector<unsigned short>& chList,
00124 unsigned short profileId = 0);
00125
00133 unsigned short GetMapping(std::map<unsigned short, QDaqChannel>& cMap);
00134
00143 unsigned short GetActiveChannels(std::map<unsigned short, QDaqChannel>& cMap,
00144 QDaqChannel::SettingsType_t what);
00145
00154 int GetBoards(unsigned short crateId,
00155 std::map<unsigned short,std::string>& boards );
00156
00170 int GetActiveChannels(unsigned short crateId,
00171 unsigned short slot,
00172 QDaqChannel::SettingsType_t what,
00173 std::vector<QDaqChannel>& v );
00174
00187 void GetListOfTriggers(unsigned short lg, std::vector<std::string>& trgList);
00188
00199 const QVdt& GetTrgParameter(unsigned short trgIndex,
00200 const std::string& par_name,
00201 unsigned short lg=0);
00210 const std::map<std::string,QVdt>& GetTrgParameters(unsigned short trgIndex,
00211 unsigned short lg);
00212
00218 bool Dump(unsigned short crateId, bool dump);
00219
00221 inline unsigned int GetCurrentRunNumber() const {return gRunNumber;}
00222
00224 inline unsigned short GetCurrentProfile() const { return fProfile; }
00225
00227 inline RunType GetCurrentRunType() const { return fRunType; }
00228
00233 unsigned int GetPulserPeriod();
00234
00238 void GetRunTypes(std::map<unsigned short, std::string>& runTypes);
00239
00244 void GetRuns(std::vector<unsigned int>& runs);
00245
00251 unsigned int GetLastRun();
00252
00260 void
00261 GetSettingsBaskets(unsigned short howMany,
00262 std::map<std::string,std::vector<QVdt> >& basketsMap);
00263
00270 unsigned short
00271 GetSettingsBasketIds(std::vector<unsigned short>& baskets);
00272
00282 unsigned short GetSettingsBasket(unsigned short id, std::string& comment);
00283
00284
00290
00294 void UpdateStart(unsigned short shifterSet);
00295
00299 void UpdateStop(StopStatus_t stopStatus, unsigned short shifterSet,
00300 unsigned short nFiles);
00301
00302
00306 void ChangeDefaultSettingsBasket(unsigned short newDefault);
00307
00312 void InsertStartComments(const std::string& comment);
00313
00318 void InsertStopComments(const std::string& comment);
00319
00325
00327 void Clear();
00328
00330 void Init();
00331
00338 void GuessCurrentRun();
00339
00341 void InsertNewRun();
00342
00351 void UndoInsertRun();
00352
00357 void SanitizeRunsTable();
00358
00360 bool LoadHardwareProfile(unsigned short crateId);
00361
00363 void Load(QDaqChannel::SettingsType_t what);
00364
00366 void Load(QDaqChannel::SettingsType_t what, unsigned short crateId);
00367
00369 void LoadHwSettings(QDaqChannel::SettingsType_t setType,
00370 unsigned short crateId);
00371
00373 void LoadTriggerSettings(unsigned short crateId);
00374
00376 void LoadDefaultTriggerSettings();
00377
00378 static std::string GetDbEnv(EnvVarName_t name);
00379
00387 std::string EscapeString(const std::string& inputString,
00388 const char& toBeEscaped,
00389 const char& escapeChar) const;
00390
00397 std::string CleanString(const std::string& inputString) const;
00398
00409 RunType String2RunType(const std::string& s) const;
00410
00414 static bool gCanWrite;
00416 static unsigned int gRunNumber;
00418 static unsigned short gSettingsBasket;
00420 unsigned short fProfile;
00422 unsigned short fDaqSet;
00424 unsigned short fTrgSet;
00426 unsigned short fFESet;
00428 unsigned short fBesSet;
00430 RunType fRunType;
00432 unsigned short fPulserSet;
00434 std::map<unsigned short,std::string> fActiveCrates;
00436 std::map<unsigned short,unsigned short> fActiveChannels;
00438 std::vector<unsigned short> fLoadedHwCrates;
00440 std::vector<unsigned short> fLoadedTrgCrates;
00442 std::vector<unsigned short> fLoadedDaqCrates;
00444 std::vector<unsigned short> fLoadedBesCrates;
00446 std::vector<unsigned short> fLoadedFECrates;
00448 std::vector<unsigned short> fLoadedPulserCrates;
00450 QApolloDbCache fCache;
00451
00453 unsigned short fMode;
00454
00456 bool fRunningMode;
00457
00458
00459 const unsigned int fLowerRunExcluded;
00460
00461 const unsigned int fUpperRunExcluded;
00462
00463 friend class QApolloDb;
00464 friend class QApolloDbServer;
00465 friend class QApolloDbGui;
00466 friend class QApolloDbDaq;
00467 friend class QApolloDbSlow;
00468 };
00469
00470 #endif // _QAPOLLO_DB_BASE_HH_