#include <VertexDbSvc.h>
Inheritance diagram for VertexDbSvc:
Public Member Functions | |
virtual StatusCode | finalize () |
virtual StatusCode | finalize () |
int | getReadBunchInfo (int runno) |
int | getReadBunchInfo (int runno) |
StatusCode | getVertexTableInfo () |
StatusCode | getVertexTableInfo () |
void | handle (const Incident &) |
void | handle (const Incident &) |
virtual StatusCode | initialize () |
virtual StatusCode | initialize () |
bool | isVertexValid () |
bool | isVertexValid () |
double * | PrimaryVertex () |
double * | PrimaryVertex () |
virtual StatusCode | queryInterface (const InterfaceID &riid, void **ppvUnknown) |
virtual StatusCode | queryInterface (const InterfaceID &riid, void **ppvUnknown) |
double * | SigmaPrimaryVertex () |
double * | SigmaPrimaryVertex () |
VertexDbSvc (const std::string &name, ISvcLocator *svcloc) | |
VertexDbSvc (const std::string &name, ISvcLocator *svcloc) | |
~VertexDbSvc () | |
~VertexDbSvc () | |
Static Public Member Functions | |
const InterfaceID & | interfaceID () |
const InterfaceID & | interfaceID () |
Private Attributes | |
std::string | dbName |
std::string | host |
std::string | m_bossver |
IDatabaseSvc * | m_dbsvc |
IDatabaseSvc * | m_dbsvc |
IDataProviderSvc * | m_eventSvc |
IDataProviderSvc * | m_eventSvc |
bool | m_isRunNumberValid |
double | m_primaryVertex [3] |
double | m_sigmaPrimaryVertex [3] |
double | m_sigmax |
double | m_sigmay |
double | m_sigmaz |
std::string | m_verpar |
double | m_vx |
double | m_vy |
double | m_vz |
std::string | password |
unsigned int | serialNo |
std::string | table |
std::string | userName |
|
00036 : 00037 Service (name, svcloc){ 00038 // declare properties 00039 declareProperty("Host" , host = std::string("bes3db2.ihep.ac.cn")); 00040 declareProperty("DbName" , dbName = std::string("offlinedb")); 00041 declareProperty("UserName" , userName = std::string("guest")); 00042 declareProperty("Password" , password = std::string("guestpass")); 00043 declareProperty("BossVer" , m_bossver = std::string("default")); 00044 declareProperty("VerPar" , m_verpar = std::string("default")); 00045 }
|
|
00047 { 00048 }
|
|
|
|
|
|
|
|
00088 { 00089 MsgStream log(messageService(), name()); 00090 log << MSG::INFO << "VertexDbSvc::finalize()" << endreq; 00091 // if(m_connect_offline) delete m_connect_offline; 00092 return StatusCode::SUCCESS; 00093 }
|
|
|
|
00186 { 00187 MsgStream log(messageService(), name()); 00188 char stmt1[200]; 00189 if(m_bossver=="default") 00190 m_bossver = getenv("BES_RELEASE"); 00191 const char* SftVer = m_bossver.c_str(); 00192 if(m_verpar=="default"){ 00193 sprintf(stmt1,"select Vx, Vy, Vz, SigmaVx, SigmaVy, SigmaVz " 00194 "from BeamPar where RunNo = %d and SftVer='%s' group by ParVer", runno,SftVer); 00195 } 00196 00197 if(m_verpar!="default"){ 00198 sprintf(stmt1,"select Vx, Vy, Vz, SigmaVx, SigmaVy, SigmaVz " 00199 "from BeamPar where RunNo = %d and SftVer='%s' and ParVer = %s", runno,SftVer,m_verpar); 00200 } 00201 DatabaseRecordVector res1; 00202 int res_no = m_dbsvc->query("offlinedb",stmt1,res1); 00203 if(res_no==0) return 0; 00204 if(res_no>=1){ 00205 DatabaseRecord* dbrec=res1[res_no-1]; 00206 sscanf((*dbrec)["Vx"], "%lf", &m_primaryVertex[0]); 00207 sscanf((*dbrec)["Vy"], "%lf", &m_primaryVertex[1]); 00208 sscanf((*dbrec)["Vz"], "%lf", &m_primaryVertex[2]); 00209 sscanf((*dbrec)["SigmaVx"], "%lf", &m_sigmaPrimaryVertex[0]); 00210 sscanf((*dbrec)["SigmaVy"], "%lf", &m_sigmaPrimaryVertex[1]); 00211 sscanf((*dbrec)["SigmaVz"], "%lf", &m_sigmaPrimaryVertex[2]); 00212 00213 return 1; 00214 } 00215 00216 }
|
|
|
|
00105 { 00106 MsgStream log(messageService(), name()); 00107 SmartDataPtr<Event::EventHeader> eventHeader(m_eventSvc,"/Event/EventHeader"); 00108 m_isRunNumberValid = false; 00109 int run = eventHeader->runNumber(); 00110 int stt =run; 00111 if(run<0){ 00112 log << MSG::INFO << "This data is the MC sample with the Run Number: " << run << endreq; 00113 run=-run; 00114 } 00115 00116 unsigned long *lengths; 00117 char stmt1[200]; 00118 if(m_bossver=="default") 00119 m_bossver = getenv("BES_RELEASE"); 00120 const char* SftVer = m_bossver.c_str(); 00121 if(m_verpar=="default"){ 00122 sprintf(stmt1,"select Vx, Vy, Vz, SigmaVx, SigmaVy, SigmaVz " 00123 "from BeamPar where RunNo = %d and SftVer='%s' group by ParVer", run,SftVer); 00124 } 00125 00126 if(m_verpar!="default"){ 00127 sprintf(stmt1,"select Vx, Vy, Vz, SigmaVx, SigmaVy, SigmaVz " 00128 "from BeamPar where RunNo = %d and SftVer='%s' and ParVer = %s", run,SftVer,m_verpar); 00129 } 00130 00131 DatabaseRecordVector res; 00132 int row_no = m_dbsvc->query("offlinedb",stmt1,res); 00133 if(row_no==0&&stt>0){ 00134 fprintf(stderr, "VertexDbSvc:: can not found vertex information for run: %d , boss version %s\n,",run,SftVer); 00135 exit(1); 00136 return StatusCode::FAILURE; 00137 } 00138 if(row_no>0){ 00139 DatabaseRecord* dbrec=res[row_no-1]; 00140 sscanf((*dbrec)["Vx"], "%lf", &m_primaryVertex[0]); 00141 sscanf((*dbrec)["Vy"], "%lf", &m_primaryVertex[1]); 00142 sscanf((*dbrec)["Vz"], "%lf", &m_primaryVertex[2]); 00143 sscanf((*dbrec)["SigmaVx"], "%lf", &m_sigmaPrimaryVertex[0]); 00144 sscanf((*dbrec)["SigmaVy"], "%lf", &m_sigmaPrimaryVertex[1]); 00145 sscanf((*dbrec)["SigmaVz"], "%lf", &m_sigmaPrimaryVertex[2]); 00146 } 00147 00148 if(row_no==0&&stt<0){ 00149 bool last =true; 00150 int kk; 00151 for(kk=0;true;kk++){ 00152 int ret = getReadBunchInfo(run+kk); 00153 if(ret==0&&(run-kk)>0){ 00154 ret = getReadBunchInfo(run-kk); 00155 last =false; 00156 } 00157 if(ret==1||kk>10000) break; 00158 } 00159 if(kk>10000){ 00160 log << MSG::ERROR << "Can not find vertex information for run:" <<run<< endreq; 00161 exit(1); 00162 } 00163 if(last == true) log << MSG::INFO << "Use Bunch infor. of run " << run+kk << " instead of run " << run << endreq; 00164 if(last == false) log << MSG::INFO << "Use Bunch infor. of run " << run-kk << " instead of run " << run << endreq; 00165 00166 } 00167 m_isRunNumberValid = true; 00168 log << MSG::INFO << "Successfully fetch the vertex information for run: " << stt << endreq; 00169 return StatusCode::SUCCESS; 00170 }
|
|
|
|
00095 { 00096 MsgStream log( messageService(), name() ); 00097 log << MSG::DEBUG << "handle: " << inc.type() << endreq; 00098 00099 if ( inc.type() == "NewRun" ){ 00100 log << MSG::DEBUG << "NewRun" << endreq; 00101 getVertexTableInfo(); 00102 } 00103 }
|
|
|
|
00059 { 00060 MsgStream log(messageService(), name()); 00061 log << MSG::INFO << "VertexDbSvc::initialize()" << endreq; 00062 00063 StatusCode sc = Service::initialize(); 00064 if( sc.isFailure() ) return sc; 00065 00066 00067 IIncidentSvc* incsvc; 00068 sc = service("IncidentSvc", incsvc); 00069 int priority = 100; 00070 if( sc.isSuccess() ){ 00071 incsvc -> addListener(this, "NewRun", priority); 00072 } 00073 00074 sc = serviceLocator()->service("DatabaseSvc",m_dbsvc,true); 00075 if (sc .isFailure() ) { 00076 log << MSG::ERROR << "Unable to find DatabaseSvc " << endreq; 00077 return sc; 00078 } 00079 00080 sc = serviceLocator()->service("EventDataSvc", m_eventSvc, true); 00081 if (sc .isFailure() ) { 00082 log << MSG::ERROR << "Unable to find EventDataSvc " << endreq; 00083 return sc; 00084 } 00085 return StatusCode::SUCCESS; 00086 }
|
|
00015 { return IID_IVertexDbSvc; }
|
|
00015 { return IID_IVertexDbSvc; }
|
|
Implements IVertexDbSvc. 00039 {
00040 return m_isRunNumberValid;
00041 }
|
|
Implements IVertexDbSvc. 00039 {
00040 return m_isRunNumberValid;
00041 }
|
|
Implements IVertexDbSvc. |
|
Implements IVertexDbSvc. 00172 { 00173 if (!m_isRunNumberValid) { 00174 fprintf(stderr, "WARNING in VertexDbSvc: runNo is invalid!\n"); 00175 } 00176 return m_primaryVertex; 00177 }
|
|
|
|
00050 { 00051 if( IID_IVertexDbSvc.versionMatch(riid) ){ 00052 *ppvInterface = static_cast<IVertexDbSvc*> (this); 00053 } else{ 00054 return Service::queryInterface(riid, ppvInterface); 00055 } 00056 return StatusCode::SUCCESS; 00057 }
|
|
Implements IVertexDbSvc. |
|
Implements IVertexDbSvc. 00179 { 00180 if (!m_isRunNumberValid) { 00181 fprintf(stderr, "WARNING in VertexDbSvc: runNo is invalid!\n"); 00182 } 00183 return m_sigmaPrimaryVertex; 00184 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|