BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
MdcHvDropSvc.h
Go to the documentation of this file.
1/**
2 * @file MdcHvDropSvc.h
3 * @author zhangzeheng (zhangzeheng@ihep.ac.cn)
4 * @brief header for main part.
5 * @version 0.1
6 * @date 2022-01-19
7 *
8 */
9#ifndef MDCHVDROPSVC_H_
10#define MDCHVDROPSVC_H_
11
12// #include "CLHEP/Matrix/Vector.h"
13// #include "DatabaseSvc/IDatabaseSvc.h"
14#include "GaudiKernel/IDataProviderSvc.h"
15#include "GaudiKernel/IIncidentListener.h"
16#include "GaudiKernel/IInterface.h"
17#include "GaudiKernel/IService.h"
18#include "GaudiKernel/Kernel.h"
19#include "GaudiKernel/Service.h"
20
21#include <ctime>
22#include <map>
23#include <mysql.h>
24#include <string>
25#include <vector>
26// using CLHEP::HepVector;
27#include "MdcHvDropSvc/IMdcHvDropSvc.h"
28// #include "DatabaseSvc/DatabaseSvc.h"
29#include "VData.h"
30
31template <class TYPE> class SvcFactory;
32
33class MdcHvDropSvc : public extends<Service, IMdcHvDropSvc>,
34 // public Service,
35 // virtual public IMdcHvDropSvc,
36 virtual public IIncidentListener {
37public:
38 friend class SvcFactory<MdcHvDropSvc>;
39
40 MdcHvDropSvc( const std::string& name, ISvcLocator* svcloc );
42
43 // virtual StatusCode queryInterface( const InterfaceID& riid, void** ppvUnknown );
44 virtual StatusCode initialize();
45 virtual StatusCode finalize();
46
47 // Incident handler
48 void handle( const Incident& );
49
50 virtual double queryRelativeHvDrop();
51 virtual void setRelativeHvDropThreshold( double threshold ) {
52 m_relativeHvDropThreshold = threshold;
53 };
54 virtual bool queryIsHvDrop() { return queryRelativeHvDrop() >= m_relativeHvDropThreshold; }
55 // virtual bool queryIsHvValid();
56
57private:
58 StatusCode FetchHvInfo( Time_t timeBegin, Time_t timeEnd );
59 StatusCode initMySql();
60 /**
61 * @brief retrive a line of HV info from a MYSQL_ROW and pushes to out and time
62 * format and layout of HV info is hardcoded
63 *
64 * @return StatusCode returns failure if mysql returns thing different from expectated colomn
65 * number
66 */
67 StatusCode sqlRow2Item( MYSQL_ROW row, MYSQL_RES* result, VDataItem& out, Time_t& time );
68 Time_t datetimeStr2Time_t( const char* str );
69 size_t Time_t2str( Time_t utctime, char* str, int length );
70 Time_t getRunBeginTime( int runid );
71 VData m_vData;
72 MYSQL m_mysql;
73 MYSQL_ROW m_row;
74 MYSQL_RES* m_result;
75 double m_relativeHvDropThreshold;
76 int m_fetchLength;
77
78 int m_useEtsT1;
79 long m_etsT1Offset;
80
81 std::map<int, Time_t> m_run_begin;
82
83 // common variables for BOSS & BEAN
84
85 // slow control database
86 std::string m_dbName;
87 std::string m_host;
88 std::string m_table;
89 std::string m_userName;
90 std::string m_password;
91 bool m_ignoreLayer_21_24;
92 int m_port;
93
94 // offline database
95 std::string m_dbName2;
96 std::string m_host2;
97 std::string m_table2;
98 std::string m_userName2;
99 std::string m_password2;
100 int m_port2;
101
102 IDataProviderSvc* m_eventSvc;
103};
104
105#endif /* MDCGVDROPSVC_H_ */
Double_t time
class defination for our cached hv info.
long Time_t
Definition VData.h:28
virtual void setRelativeHvDropThreshold(double threshold)
void handle(const Incident &)
virtual StatusCode initialize()
virtual double queryRelativeHvDrop()
virtual bool queryIsHvDrop()
virtual StatusCode finalize()
MdcHvDropSvc(const std::string &name, ISvcLocator *svcloc)
Forward and external declarations.
Definition VData.h:29