41 : base_class( name, svcloc ) {
43 declareProperty(
"Host", host = std::string(
"bes3db2.ihep.ac.cn" ) );
44 declareProperty(
"DbName", dbName = std::string(
"offlinedb" ) );
45 declareProperty(
"UserName", userName = std::string(
"guest" ) );
46 declareProperty(
"Password", password = std::string(
"guestpass" ) );
47 declareProperty(
"IsData", m_isData = std::string(
"default" ) );
48 declareProperty(
"BossRelease", m_bossRelease = std::string(
"default" ) );
49 declareProperty(
"TofEnergyPar", m_calPar =
"default" );
50 declareProperty(
"TofEnergyBossVer", m_bossVer =
"default" );
106 int& runfrm,
int& runto,
int RunNo,
107 std::string BossRelease, std::string DataType ) {
108 MsgStream log(
msgSvc(),
"TofEnergyCalibSvc" );
114 StatusCode sc = serviceLocator()->service(
"DatabaseSvc",
m_dbsvc,
true );
115 if ( sc.isFailure() )
117 log << MSG::ERROR <<
" Unable to find DatabaseSvc " << endmsg;
121 const char* bossRelease = BossRelease.c_str();
122 const char* dataType = DataType.c_str();
125 "select RunFrom,RunTo,SftVer,ParVer from CalVtxLumVer where BossRelease = '%s' and "
126 "RunFrom <= %d and RunTo "
127 ">= %d and DataType='%s' ",
128 bossRelease, run_No, run_No, dataType );
130 int row_no =
m_dbsvc->query(
"offlinedb", stmt, res );
133 std::cout <<
"ERROR:error searching with:" << stmt << std::endl;
139 runfrm = records1->
GetInt(
"RunFrom" );
140 runto = records1->
GetInt(
"RunTo" );
141 cout << dataType <<
" runfrm,runto in getSftParVer is:" << runfrm <<
"::::" << runto
144 CalParVer = records1->
GetString(
"ParVer" );
148 cout <<
"ERROR: " << dataType <<
" set overlapped run number in the table CalVtxLumVer"
152 return StatusCode::SUCCESS;
155 MsgStream log(
msgSvc(), name() );
156 SmartDataPtr<Event::EventHeader> eventHeader( m_eventSvc,
"/Event/EventHeader" );
157 int run = eventHeader->runNumber();
171 cout <<
"This data is the MC sample with the Run Number: " << run << endl;
175 if ( m_bossRelease ==
"default" ) m_bossRelease = getenv(
"BES_RELEASE" );
176 if ( m_isData ==
"default" )
178 cout <<
"Please set the type of TofEnergy" << endl;
181 if ( m_isData ==
"Data" ) cType =
"TofEnergyData";
182 if ( m_isData ==
"MC" ) cType =
"TofEnergyMC";
183 st1 =
getSftParVer( m_bossVer, m_calPar, runfrm1, runto1, run, m_bossRelease, cType );
184 if ( cType ==
"TofEnergyData" )
187 "select CalibConst,Para1,Para2,Para3,Para4,Para5 from TofEnergyCalib where "
188 "BossVer = '%s' and RunFrom <= "
189 "%d and RunTo >= %d and isData = '%s'",
190 m_bossVer.c_str(), run, run, m_isData.c_str() );
192 else if ( cType ==
"TofEnergyMC" )
195 "select CalibConst,Para1,Para2,Para3,Para4,Para5 from TofEnergySim where BossVer "
196 "= '%s' and RunFrom <= %d "
197 "and RunTo >= %d and isData = '%s'",
198 m_bossVer.c_str(), run, run, m_isData.c_str() );
202 int row_no =
m_dbsvc->query(
"offlinedb", stmt1, res );
206 m_CalibConst = dbrec.
GetDouble(
"CalibConst" );
212 cout << stmt1 << endl;
213 cout <<
"BossReleaseVer=" << m_bossRelease.c_str() <<
"\t"
214 <<
"TofEnergyBossVer=" << m_bossVer.c_str() << endl;
215 cout <<
"m_CalibConst is:" << m_CalibConst << endl;
216 cout <<
"Para1=" << m_Para1 <<
"\t"
217 <<
"Para2=" << m_Para2 <<
"\t"
218 <<
"Para3=" << m_Para3 <<
"\t"
219 <<
"Para4=" << m_Para4 <<
"\t"
220 <<
"Para5=" << m_Para5 << endl;
221 cout <<
"Successfully fetch TofEnergyCalibSvc information for run: " << run << endl;
224 else if ( row_no <= 0 )
226 cout <<
" TofEnergyCalibSvc:: can not found TofEnergyCalibSvc information of run:" << run
227 <<
", boss version " << m_bossRelease << endl;
sprintf(cut, "kal_costheta0_em>-0.93&&kal_costheta0_em<0.93&&kal_pxy0_em>=0.05+%d*0.1&&kal_" "pxy0_em<0.15+%d*0.1&&NGch>=2", j, j)
StatusCode getSftParVer(std::string &SftVer, std::string &CalParVer, int &runfrm, int &runto, int RunNo, std::string BossRelease, std::string DataType)