FieldDBUtil::ConnectionDB Class Reference

#include <ConnectionDB.h>

List of all members.

Public Types

 RETOk = 0
 RETBadCnfFile = 1
 RETBadHost = 2
 RETNoConnect = 3
 RETWrongState = 4
 RETBadValue = 5
 RETMySQLError = 6
 RETNoSchemaMatch = 7
 LEVELProd = 1
 LEVELDev = 2
 LEVELTest = 4
 LEVELSuperseded = 8
enum  eRet {
  RETOk = 0, RETBadCnfFile = 1, RETBadHost = 2, RETNoConnect = 3,
  RETWrongState = 4, RETBadValue = 5, RETMySQLError = 6, RETNoSchemaMatch = 7
}
enum  eLevel { LEVELProd = 1, LEVELDev = 2, LEVELTest = 4, LEVELSuperseded = 8 }
 Used to form bit masks for dbs queries. More...

Public Member Functions

 ConnectionDB ()
 Constructor keeps track of table of interest.
 ~ConnectionDB ()
ConnectionDB::eRet getReadSC_MagnetInfo (std::vector< double > &current, int runNo)
ConnectionDB::eRet getBeamEnergy (std::vector< double > &beamE, int runNo)

Private Attributes

IDatabaseSvcm_dbsvc


Detailed Description

Definition at line 13 of file ConnectionDB.h.


Member Enumeration Documentation

enum FieldDBUtil::ConnectionDB::eLevel

Used to form bit masks for dbs queries.

Enumerator:
LEVELProd 
LEVELDev 
LEVELTest 
LEVELSuperseded 

Definition at line 36 of file ConnectionDB.h.

00036                 {
00037       LEVELProd = 1,
00038       LEVELDev  = 2,
00039       LEVELTest = 4,
00040       LEVELSuperseded = 8
00041     };

enum FieldDBUtil::ConnectionDB::eRet

Enumerator:
RETOk 
RETBadCnfFile 
RETBadHost 
RETNoConnect 
RETWrongState 
RETBadValue 
RETMySQLError 
RETNoSchemaMatch 

Definition at line 25 of file ConnectionDB.h.

00025               {
00026       RETOk = 0,
00027       RETBadCnfFile = 1,
00028       RETBadHost = 2,
00029       RETNoConnect = 3,
00030       RETWrongState = 4,
00031       RETBadValue = 5,
00032       RETMySQLError = 6,
00033       RETNoSchemaMatch = 7
00034     };


Constructor & Destructor Documentation

FieldDBUtil::ConnectionDB::ConnectionDB (  ) 

Constructor keeps track of table of interest.

Definition at line 24 of file ConnectionDB.cxx.

References m_dbsvc.

00024                              {
00025     StatusCode sc = Gaudi::svcLocator()->service("DatabaseSvc", m_dbsvc, true);
00026     if (sc .isFailure() ) {
00027       std::cout << "ERROR: In ConnectionDB()--> Unable to find DatabaseSvc " << std::endl;
00028     }
00029   }

FieldDBUtil::ConnectionDB::~ConnectionDB (  )  [inline]

Definition at line 23 of file ConnectionDB.h.

00023 {}


Member Function Documentation

ConnectionDB::eRet FieldDBUtil::ConnectionDB::getBeamEnergy ( std::vector< double > &  beamE,
int  runNo 
)

Definition at line 77 of file ConnectionDB.cxx.

References abs, DatabaseRecordVector::clear(), m_dbsvc, IDatabaseSvc::query(), RETMySQLError, and RETOk.

Referenced by MagneticFieldSvc::init_params().

00077                                                                                    {
00078     //Read magnetic field map
00079      char stmt1[200];
00080      int run_No = std::abs(runNo);
00081 
00082      sprintf(stmt1,"select BPR_PRB,BER_PRB from RunParams where run_number = %d ",run_No);
00083 
00084      DatabaseRecordVector results;
00085      results.clear();
00086      int status = m_dbsvc->query("run",stmt1,results);
00087      if(status<0){
00088        std::cout << "ERROR Read the beam energy from the Database" << endreq;
00089        exit(1);
00090      }
00091 
00092      int RowNumber = results.size();
00093 
00094      if(RowNumber == 0) {
00095        beamE.push_back(1.843); // for positron
00096        beamE.push_back(1.843); // for electron
00097 
00098        return RETOk;
00099      }
00100 
00101      if(RowNumber!=1){
00102          std::cout<<"ERROR:error searching beam energy in the database, check your selection criterions"<<std::endl;
00103         return RETMySQLError;
00104      }
00105 
00106      beamE.push_back(atof((*results[0])["BPR_PRB"])); // for positron
00107      beamE.push_back(atof((*results[0])["BER_PRB"])); // for electron
00108 
00109      return RETOk;
00110   }                                                                                                                       

ConnectionDB::eRet FieldDBUtil::ConnectionDB::getReadSC_MagnetInfo ( std::vector< double > &  current,
int  runNo 
)

Definition at line 32 of file ConnectionDB.cxx.

References abs, DatabaseRecordVector::clear(), DatabaseRecord::GetDouble(), m_dbsvc, IDatabaseSvc::query(), RETMySQLError, and RETOk.

Referenced by MagneticFieldSvc::init_params().

00032                                                                                             {
00033 
00034 #ifdef BEAN
00035     static DatabaseSvc* m_dbsvc = 0;          
00036                                          
00037     if( !m_dbsvc ) {                          
00038       m_dbsvc = DatabaseSvc::instance();      
00039     }                                         
00040 #endif
00041 
00042     //Read magnetic field map                                                                                             
00043     char stmt1[200];
00044     int run_No = std::abs(runNo);                                                                                             
00045 
00046     sprintf(stmt1,"select Magnet_Current,SCQL,SCQR from SC_magnet where run_number = %d ",run_No);
00047 
00048     DatabaseRecordVector results;                                                                                         
00049     results.clear();                                                                                                      
00050     int status = m_dbsvc->query("run",stmt1,results);                                                                      
00051 
00052     if(status<0){                                                                                                         
00053       std::cout << "ERROR Read the SSM and SCQ current from the Database" << endl;                                        
00054       exit(1);                                                                                                            
00055     }                                                                                                                     
00056                                                                                                                           
00057     int RowNumber = results.size();                                                                                       
00058     if(RowNumber!=1){                                                                                                     
00059       std::cout<<"ERROR:error searching SC_Magnet Data in the database, check your selection criterions"<<std::endl;      
00060       return RETMySQLError;                                                                                               
00061     }                                                                                                                     
00062 
00063     DatabaseRecord& rec = *results[0];                                                                                    
00064     double ssm_curr = rec.GetDouble("Magnet_Current");                                                                    
00065     double scql_curr = rec.GetDouble("SCQL");                                                                             
00066     double scqr_curr = rec.GetDouble("SCQR");                                                                             
00067 
00068     // save results in vector                                                                                             
00069     current.resize(3);                                                                                                    
00070     current[0] = ssm_curr;                                                                                                
00071     current[1] = scql_curr;                                                                                               
00072     current[2] = scqr_curr;                                                                                               
00073 
00074     return RETOk;                                                                                                         
00075   }


Member Data Documentation

IDatabaseSvc* FieldDBUtil::ConnectionDB::m_dbsvc [private]

Definition at line 48 of file ConnectionDB.h.

Referenced by ConnectionDB(), getBeamEnergy(), and getReadSC_MagnetInfo().


Generated on Tue Nov 29 23:36:34 2016 for BOSS_7.0.2 by  doxygen 1.4.7