00001
00002
00003
00004 #ifndef Utilities_MeasuredEcmsSvc_H
00005 #define Utilities_MeasuredEcmsSvc_H
00006 #include "MeasuredEcmsSvc/IMeasuredEcmsSvc.h"
00007 class IDatabaseSvc;
00008 template <class TYPE> class CnvFactory;
00009 class MeasuredEcmsSvc:public Service, virtual public IMeasuredEcmsSvc, virtual public IIncidentListener{
00010 friend class CnvFactory<MeasuredEcmsSvc>;
00011 public:
00012 MeasuredEcmsSvc(const std::string& name, ISvcLocator* svcLoc);
00013 virtual ~MeasuredEcmsSvc();
00014
00015 virtual StatusCode queryInterface(const InterfaceID& riid, void** ppvIF);
00016 virtual StatusCode initialize();
00017 virtual StatusCode finalize();
00018
00019 void handle(const Incident&);
00020
00021 void readMeasuredEcms(int runNo);
00022 void readRunParams(int runNo);
00023
00024 void readDB(int runNo);
00025
00026 int getSampleName(int runNo);
00027 int getRunFrom(int runNo);
00028 int getRunTo(int runNo);
00029
00030 bool isRunNoValid(int runNo);
00031
00032 double getEcms(int runNo);
00033 double getEcmsErr(int runNo);
00034 double getAveEcms(int runNo);
00035 double getAveEcmsErr(int runNo);
00036
00037 double getPx(int runNo);
00038 double getPy(int runNo);
00039 double getPz(int runNo);
00040
00041 void readInfo(int runNo, char *tab, char *col);
00042 double getInfo(int runNo, char *tab, char *col);
00043 bool isReadDBValid(int runNo, char *tab, char *col);
00044
00045 void readInfo(int runNo);
00046 double getInfo(int runNo);
00047 bool isReadDBValid(int runNo);
00048
00049 private:
00050
00051 int RunParamsMin, RunParamsMax;
00052
00053 int MeasuredEcmsMin, MeasuredEcmsMax;
00054
00055 IDatabaseSvc* m_dbSvc;
00056 IDataProviderSvc* m_eventSvc;
00057 int m_sampleName, m_runFrom, m_runTo;
00058 double m_ecms, m_ecmsErr, m_aveEcms, m_aveEcmsErr;
00059 double m_info;
00060 bool m_runNoValid, m_callRead, m_recallRead;
00061 double m_px, m_py, m_pz;
00062 std::string table;
00063 std::string column;
00064 };
00065 #endif