9 #include "CoolKernel/Exception.h"
10 #include "CoolKernel/FolderSpecification.h"
11 #include "CoolKernel/IDatabaseSvc.h"
12 #include "CoolKernel/IDatabase.h"
13 #include "CoolKernel/IFolder.h"
14 #include "CoolKernel/IFolderSet.h"
15 #include "CoolKernel/IObject.h"
16 #include "CoolKernel/IObjectIterator.h"
17 #include "CoolKernel/pointers.h"
18 #include "CoolApplication/DatabaseSvcFactory.h"
21 #include "RelationalAccess/IConnectionServiceConfiguration.h"
22 #include "RelationalAccess/ConnectionService.h"
23 #include "RelationalAccess/ISessionProxy.h"
24 #include "RelationalAccess/ITransaction.h"
25 #include "RelationalAccess/ISchema.h"
26 #include "RelationalAccess/ITable.h"
27 #include "RelationalAccess/IQuery.h"
28 #include "RelationalAccess/ICursor.h"
86 typename std::list<std::pair<IOVRange, T > >
data;
99 m_last =
data.begin();
112 if (
data.empty())
return T(-1);
114 typename std::list<std::pair<IOVRange, T> >
::iterator it;
128 if ((m_last->first).isInRange(
time))
return m_last->second;
131 if (++(m_last) !=
data.end()) {
133 if ((m_last->first).isInRange(
time))
return m_last->second;
136 m_last =
data.begin();
143 if ( m_last ==
data.end() ) --m_last;
146 if (m_last->first.stop() <=
time) {
149 for (++m_last; m_last !=
data.end(); ++m_last) {
151 if ((m_lastData = (m_last->first).isInRange(
time)))
return m_last->second;
154 }
else if ( m_last !=
data.begin() && m_last->first.start() >
time) {
160 if ((m_lastData = (m_last->first).isInRange(
time)))
return m_last->second;
161 }
while (m_last !=
data.begin());
165 if ((m_lastData = m_last->first.isInRange(
time)))
return m_last->second;
170 m_last =
data.begin();
180 std::list<std::pair<IOVRange, T> > mydata;
193 std::pair<IOVRange, T>
val;
201 if (
val.first.start() < firsttime ||
val.first.stop() > lasttime) {
202 IOVTime iovstart((
val.first.start() < firsttime ? firsttime :
val.first.start()));
203 IOVTime iovstop((
val.first.stop() > lasttime ? lasttime :
val.first.stop()));
206 mydata.push_back(
val);
209 if (
elem->first.isInRange(lasttime))
break;
252 void setIOV(
const cool::ValidityKey
start,
const cool::ValidityKey
stop);
257 cool::ChannelId
getHLTChannelId(
const std::string& trigger,
const std::string& folder_name);
260 cool::ChannelId
getL1ChannelId(
const std::string& trigger,
const std::string& folder_name);
263 cool::ChannelId
getLumiChannelId(
const std::string& lumimethod,
const std::string& folder_name);
283 std::map<cool::ValidityKey, T>
getObjMapFromFolderAtChan(
const std::string& obj_name,
const std::string& folder_name,
const cool::ChannelId&
id);
286 std::map<cool::ValidityKey, T>
getTrigObjMapFromFolderByName(
const std::string& obj_name,
const std::string& folder_name,
const std::string& trigger);
293 std::map<cool::ValidityKey, T>
getLumiIterator(
const std::string& luminame,
const std::string& folder_name,
const std::string&
tag,
const cool::ChannelId&
id );
306 std::map<cool::ValidityKey, LumiFolderData>
316 std::map<cool::ValidityKey, L1CountFolderData>
321 IOVData<T> getIOVData(
const std::string&
name,
const std::string& folder_name,
const cool::ChannelId&
id,
const std::string&
tag=
"");
324 std::string
transConn(
const std::string& inconn);
352 std::map<cool::ValidityKey, T> mymap;
354 cool::IFolderPtr folder_ptr =
m_sourceDbPtr->getFolder(folder_name);
357 while (obj_itr->goToNext()){
359 const cool::IRecord&
payload=obj_itr->currentRef().payload();
362 if(
payload[
"ChainName"].data<std::string>() == trigger){
364 const cool::IRecord&
payload=obj_itr->currentRef().payload();
366 mymap.insert( std::pair<cool::ValidityKey, T>(obj_itr->currentRef().since() ,
payload[obj_name].data<
T>()));
382 std::map<cool::ValidityKey, T> mymap;
383 cool::IFolderPtr folder_ptr =
m_sourceDbPtr->getFolder(folder_name);
384 cool::ChannelSelection chsel(
id);
385 if(folder_ptr->existsChannel(
id)){
386 cool::IObjectIteratorPtr itr = folder_ptr->browseObjects(
m_VKstart,
m_VKstop,chsel);
387 while (itr->goToNext()) {
388 const cool::IRecord&
payload=itr->currentRef().payload();
390 mymap.insert( std::pair<cool::ValidityKey, T>(itr->currentRef().since() ,
payload[obj_name].data<
T>()));
402 std::map<cool::ValidityKey, T>
CoolQuery::getLumiIterator(
const std::string& luminame,
const std::string& folder_name,
const std::string&
tag,
const cool::ChannelId&
id ){
404 std::map<cool::ValidityKey, T> mymap;
405 cool::IFolderPtr folder_ptr =
m_sourceDbPtr->getFolder(folder_name);
407 if(folder_ptr->existsChannel(
id) && folder_ptr->existsUserTag(
tag)){
409 while (itr->goToNext()) {
410 const cool::IRecord&
payload=itr->currentRef().payload();
411 mymap.insert( std::pair<cool::ValidityKey, T>(itr->currentRef().since() ,
payload[luminame].data<
T>()));
413 }
else if(folder_ptr->existsChannel(
id) && !folder_ptr->existsUserTag(
tag)){
415 mymap = CoolQuery::getObjMapFromFolderAtChan<T>(luminame, folder_name,
id);
426 CoolQuery::getIOVData(
const std::string& obj_name,
const std::string& folder_name,
const cool::ChannelId&
id,
const std::string&
tag) {
430 cool::IFolderPtr folder_ptr =
m_sourceDbPtr->getFolder(folder_name);
431 cool::ChannelSelection chsel(
id);
432 if(!folder_ptr->existsChannel(
id)){
438 cool::IObjectIteratorPtr itr;
439 if (folder_ptr->existsUserTag(
tag)) {
445 while (itr->goToNext()) {
447 since.setRETime(itr->currentRef().since());
448 until.setRETime(itr->currentRef().until());
452 const cool::IRecord&
payload=itr->currentRef().payload();
462 #endif //> COOLQUERY_H