QApolloDbBase.hh

Go to the documentation of this file.
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   /* lower bound (excluded) for run numbers allowed for a given detector */
00459    const unsigned int fLowerRunExcluded;
00460   /* upper bound (excluded) for run numbers allowed for a given detector */
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_

Generated on Fri Mar 6 13:40:39 2009 for CUORE Software by  doxygen 1.5.1