101 MsgStream log(messageService(), name());
102 log << MSG::DEBUG <<
"handle: " << inc.type() << endreq;
104 SmartDataPtr<Event::EventHeader> eventHeader(m_eventSvc,
"/Event/EventHeader");
105 int runNo = eventHeader->runNumber();
106 m_runNo = std::abs(
runNo);
107 if (inc.type() ==
"NewRun") {
108 log << MSG::INFO <<
"RunNo is new, call the readMeasuredEcms again" << endreq;
113 SmartDataPtr<Event::EventHeader> eventHeader(m_eventSvc,
"/Event/EventHeader");
114 int run = eventHeader->runNumber();
117 m_isRunNoValid =
true;
120 std::cout<<
"MeasuredEcmsSvc, could not get Ecm infor in handle new run"<<std::endl;
174 if (
runNo == m_runflag)
return;
176 MsgStream log(
msgSvc(), name());
177 log << MSG::INFO <<
"begin read database MeasuredEcmsSvc" << endreq;
179 m_dbRecordVector.
clear();
184 m_isRunNoValid =
false;
185 int runNum = std::abs(
runNo);
187 if (
runNo < 0) log << MSG::INFO <<
"MeasuredEcmsSvc for MC events" << endreq;
188 else log << MSG::INFO <<
"MeasuredEcmsSvc for DT events" << endreq;
197 switch(m_tableOption) {
199 snprintf(stmt, 1024,
"select sample, RunFrom, RunTo, Ecms, Ecms_err, Ave_Ecms, Ave_Ecms_err from MeasuredEcms2 where RunFrom <= %d and RunTo >= %d", runNum, runNum);
203 snprintf(stmt, 1024,
"select beam_energy, px, py, pz, beam_energy_err from RunParams where run_number = %d", runNum);
207 snprintf(stmt1, 1024,
"select sample, RunFrom, RunTo, Ecms, Ecms_err, Ave_Ecms, Ave_Ecms_err from MeasuredEcms2 where RunFrom <= %d and RunTo >= %d", runNum, runNum);
208 snprintf(stmt2, 1024,
"select beam_energy, px, py, pz, beam_energy_err from RunParams where run_number = %d", runNum);
212 if (m_tableOption == 1 || m_tableOption == 2) {
213 int rowNo = m_dbSvc->
query(
"offlinedb", stmt, m_dbRecordVector);
216 log << MSG::ERROR <<
"RowNo can not be 0, failed to read DB for " <<
runNo << endreq;
219 if (m_tableOption == 1) m_rowNo1 = 1;
220 if (m_tableOption == 2) m_rowNo2 = 1;
221 log << MSG::INFO <<
"initialize the DatabaseRecordVector OK for " <<
runNo << endreq;
222 m_isRunNoValid =
true;
226 m_rowNo1 = m_dbSvc->
query(
"offlinedb", stmt1, m_dbRecordVector);
228 m_dbRecordVector.
clear();
229 m_rowNo2 = m_dbSvc->
query(
"offlinedb", stmt2, m_dbRecordVector);
232 if (m_rowNo1 == 0 && m_rowNo2 == 0) {
233 log << MSG::ERROR <<
"RowNo can not be 0, failed to read DB for " <<
runNo << endreq;
236 log << MSG::INFO <<
"initialize the DatabaseRecordVector OK for " <<
runNo << endreq;
237 m_isRunNoValid =
true;
245 MsgStream log(
msgSvc(), name());
246 log << MSG::INFO <<
"begin read database MeasuredEcmsSvc from " <<
m_runFrom <<
" to " <<
m_runTo << endreq;
247 m_dbRecordVector.
clear();
251 m_isRunNoValid =
false;
254 if ((runFrom >= 23463 && runFrom <= 38140) || (runFrom >= 47543 && runFrom <= 51498)) {
255 if ((runTo >= 23463 && runTo <= 38140) || (runTo >= 47543 && runTo <= 51498)) {
256 log << MSG::INFO <<
"read table MeasuredEcms2 for " << runFrom <<
":" << runTo << endreq;
257 snprintf(stmt, 1024,
"select sample, RunFrom, RunTo, Ecms, Ecms_err, Ave_Ecms, Ave_Ecms_err from MeasuredEcms2 where RunFrom >= %d and RunTo <= %d", runFrom, runTo);
261 else if ((runFrom >= 11414 && runFrom <= 23454) || (runFrom >= 43716 && runFrom <= 47066) || (runFrom >= 70522 && runFrom <= 73929) || (runFrom >= 74031 && runFrom <= 78536) ) {
262 if ((runTo >= 11414 && runTo <= 23454) || (runTo >= 43716 && runTo <= 47066) || (runFrom >= 70522 && runFrom <= 73929) || (runFrom >= 74031 && runFrom <= 78536) ) {
263 log << MSG::INFO <<
"read table RunParams for " << runFrom <<
":" << runTo << endreq;
264 snprintf(stmt, 1024,
"select run_number, beam_energy, px, py, pz, beam_energy_err from RunParams where run_number >= %d and run_number <= %d", runFrom, runTo);
272 if (m_tableOption == 1 || m_tableOption == 2) {
273 int rowNo = m_dbSvc->
query(
"offlinedb", stmt, m_dbRecordVector);
275 log << MSG::ERROR <<
"RowNo can not be 0, failed to read DB for " << runFrom <<
":" << runTo << endreq;
276 cout <<
"RowNo can not be 0, failed to read DB for " << runFrom <<
":" << runTo << endl;
278 if (m_tableOption == 1) m_rowNo1 = 1;
279 if (m_tableOption == 2) m_rowNo2 = 1;
280 log << MSG::INFO <<
"initialize the DatabaseRecordVector OK for " << runFrom <<
":" << runTo << endreq;
281 cout <<
"MeasuredEcmsSvc: initialize the DatabaseRecordVector OK for " << runFrom <<
":" << runTo <<
", Nrecord = " << rowNo <<
"." << endl;
282 m_isRunNoValid =
true;
285 for (
int i=0; i<rowNo; i++ ) {
286 int runnumber = m_dbRecordVector[i]->GetInt(
"run_number");
291 for (
int i=0; i<rowNo; i++ ) {
292 int run0 = m_dbRecordVector[i]->GetInt(
"RunFrom");
293 int run1 = m_dbRecordVector[i]->GetInt(
"RunTo");
294 for (
int j = run0; j<=run1; j++) {