CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Classes | Public Types | Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes
CondDBESSource Class Reference

#include <CondDBESSource.h>

Inheritance diagram for CondDBESSource:
edm::eventsetup::DataProxyProvider edm::EventSetupRecordIntervalFinder PoolDBESSource

Classes

struct  Stats
 

Public Types

typedef std::multimap
< std::string, ProxyP
ProxyMap
 
typedef boost::shared_ptr
< cond::DataProxyWrapperBase
ProxyP
 
- Public Types inherited from edm::eventsetup::DataProxyProvider
typedef std::vector< std::pair
< DataKey, boost::shared_ptr
< DataProxy > > > 
KeyedProxies
 
typedef std::vector
< EventSetupRecordKey
Keys
 
typedef std::map
< EventSetupRecordKey,
KeyedProxies
RecordProxies
 

Public Member Functions

 CondDBESSource (const edm::ParameterSet &)
 
 ~CondDBESSource ()
 
- Public Member Functions inherited from edm::eventsetup::DataProxyProvider
 DataProxyProvider ()
 
const ComponentDescriptiondescription () const
 
bool isUsingRecord (const EventSetupRecordKey &) const
 
const KeyedProxieskeyedProxies (const EventSetupRecordKey &iRecordKey) const
 
void resetProxies (const EventSetupRecordKey &iRecordType)
 
void resetProxiesIfTransient (const EventSetupRecordKey &iRecordType)
 
void setAppendToDataLabel (const edm::ParameterSet &)
 
void setDescription (const ComponentDescription &iDescription)
 
std::set< EventSetupRecordKeyusingRecords () const
 
virtual ~DataProxyProvider ()
 
- Public Member Functions inherited from edm::EventSetupRecordIntervalFinder
const
eventsetup::ComponentDescription
descriptionForFinder () const
 
 EventSetupRecordIntervalFinder ()
 
std::set
< eventsetup::EventSetupRecordKey
findingForRecords () const
 
const ValidityIntervalfindIntervalFor (const eventsetup::EventSetupRecordKey &, const IOVSyncValue &)
 
void setDescriptionForFinder (const eventsetup::ComponentDescription &iDescription)
 
virtual ~EventSetupRecordIntervalFinder ()
 

Protected Member Functions

virtual void newInterval (const edm::eventsetup::EventSetupRecordKey &iRecordType, const edm::ValidityInterval &iInterval)
 called when a new interval of validity occurs for iRecordType More...
 
virtual void registerProxies (const edm::eventsetup::EventSetupRecordKey &iRecordKey, KeyedProxies &aProxyList)
 
virtual void setIntervalFor (const edm::eventsetup::EventSetupRecordKey &, const edm::IOVSyncValue &, edm::ValidityInterval &)
 
- Protected Member Functions inherited from edm::eventsetup::DataProxyProvider
void eraseAll (const EventSetupRecordKey &iRecordKey)
 deletes all the Proxies in aStream More...
 
void invalidateProxies (const EventSetupRecordKey &iRecordKey)
 
template<class T >
void usingRecord ()
 
void usingRecordWithKey (const EventSetupRecordKey &)
 
- Protected Member Functions inherited from edm::EventSetupRecordIntervalFinder
template<class T >
void findingRecord ()
 
void findingRecordWithKey (const eventsetup::EventSetupRecordKey &)
 

Private Types

typedef std::set
< cond::TagMetadata
TagCollection
 

Private Member Functions

void fillTagCollectionFromDB (const std::string &coraldb, const std::string &prefix, const std::string &postfix, const std::string &roottag, std::map< std::string, cond::TagMetadata > &replacement)
 

Private Attributes

bool doDump
 
bool doRefresh
 
unsigned int lastRun
 
cond::DbConnection m_connection
 
ProxyMap m_proxies
 
TagCollection m_tagCollection
 
Stats stats
 

Detailed Description

Definition at line 34 of file CondDBESSource.h.

Member Typedef Documentation

typedef std::multimap< std::string, ProxyP> CondDBESSource::ProxyMap

Definition at line 38 of file CondDBESSource.h.

Definition at line 37 of file CondDBESSource.h.

typedef std::set< cond::TagMetadata > CondDBESSource::TagCollection
private

Definition at line 63 of file CondDBESSource.h.

Constructor & Destructor Documentation

CondDBESSource::CondDBESSource ( const edm::ParameterSet iConfig)
explicit

required by eventsetup

Definition at line 104 of file CondDBESSource.cc.

References b, cond::DbScopedTransaction::commit(), cond::DbConnection::configuration(), cond::DbConnection::configure(), cond::DbConnection::createSession(), edm::ParameterSet::exists(), fillTagCollectionFromDB(), edm::EventSetupRecordIntervalFinder::findingRecordWithKey(), edm::eventsetup::heterocontainer::HCTypeTag::findType(), reco::get(), edm::ParameterSet::getParameter(), cond::MetaData::getToken(), edm::ParameterSet::getUntrackedParameter(), align_cfg::globaltag, cond::DbSession::isTransactional(), gen::k, cond::TagMetadata::labelname, m_connection, m_proxies, m_tagCollection, CondDBESSource::Stats::nData, cond::DbSession::open(), cond::TagMetadata::pfn, cond::TagMetadata::recordname, asciidump::s, cond::DbConnectionConfiguration::setParameters(), cond::DbScopedTransaction::start(), cond::DbTransaction::start(), stats, cond::TagMetadata::tag, align_tpl::toGet, cond::DbSession::transaction(), python.IdGenerator::transaction, edm::eventsetup::EventSetupRecordKey::type(), and edm::eventsetup::DataProxyProvider::usingRecordWithKey().

104  :
105  m_connection(),
106  lastRun(0), // for the refresh
107  doRefresh(iConfig.getUntrackedParameter<bool>("RefreshEachRun",false)),
108  doDump(iConfig.getUntrackedParameter<bool>("DumpStat",false))
109 {
110  Stats s = {0,0,0,0,0};
111  stats=s;
112  //std::cout<<"CondDBESSource::CondDBESSource"<<std::endl;
113  /*parameter set parsing and pool environment setting
114  */
115 
116  // default connection string
117  // inproduction used for the global tag
118  std::string userconnect= iConfig.getParameter<std::string>("connect");
119 
120 
121  // connection configuration
122  edm::ParameterSet connectionPset = iConfig.getParameter<edm::ParameterSet>("DBParameters");
123  m_connection.configuration().setParameters( connectionPset );
125 
126 
127  // load additional record/tag info it will overwrite the global tag
128  std::map<std::string,cond::TagMetadata> replacement;
129  if( iConfig.exists("toGet") ){
130  typedef std::vector< edm::ParameterSet > Parameters;
131  Parameters toGet = iConfig.getParameter<Parameters>("toGet");
132  for(Parameters::iterator itToGet = toGet.begin(); itToGet != toGet.end(); ++itToGet ) {
134  nm.recordname=itToGet->getParameter<std::string>("record");
135  nm.labelname=itToGet->getUntrackedParameter<std::string>("label","");
136  nm.tag=itToGet->getParameter<std::string>("tag");
137  nm.pfn=itToGet->getUntrackedParameter<std::string>("connect",userconnect);
138  // nm.objectname=itFound->second;
139  std::string k=nm.recordname+"@"+nm.labelname;
140  replacement.insert(std::pair<std::string,cond::TagMetadata>(k,nm));
141  }
142  }
143 
144  // get the global tag, merge with "replacement" store in "tagCollection"
145  std::string globaltag;
146  if( iConfig.exists("globaltag")) globaltag=iConfig.getParameter<std::string>("globaltag");
147 
148  fillTagCollectionFromDB(userconnect,
149  iConfig.getUntrackedParameter<std::string>("pfnPrefix",""),
150  iConfig.getUntrackedParameter<std::string>("pfnPostfix",""),
151  globaltag,
152  replacement);
153 
154 
155  TagCollection::iterator it;
156  TagCollection::iterator itBeg=m_tagCollection.begin();
157  TagCollection::iterator itEnd=m_tagCollection.end();
158 
159  typedef std::map<std::string, cond::DbSession> Sessions;
160  Sessions sessions;
161 
162  /* load DataProxy Plugin (it is strongly typed due to EventSetup ideosyncrasis)
163  * construct proxy
164  * contrary to EventSetup the "object-name" is not used as identifier: multiple entries in a record are
165  * dinstinguished only by their label...
166  * done in two step: first create ProxyWrapper loading ALL required dictionaries
167  * this will allow to initialize POOL in one go for each "database"
168  * The real initialization of the Data-Proxies is done in the second loop
169  */
170  std::vector<cond::DataProxyWrapperBase *> proxyWrappers(m_tagCollection.size());
171  size_t ipb=0;
172  for(it=itBeg;it!=itEnd;++it){
173  proxyWrappers[ipb++] =
174  cond::ProxyFactory::get()->create(buildName(it->recordname));
175  }
176  // now all required libraries have been loaded
177  // init sessions and DataProxies
178  ipb=0;
179  for(it=itBeg;it!=itEnd;++it){
180  Sessions::iterator p = sessions.find( it->pfn);
181  cond::DbSession nsess;
182  if (p==sessions.end()) {
183  //open db get tag info (i.e. the IOV token...)
184  nsess = m_connection.createSession();
185  nsess.open( it->pfn, true );
186  // keep transaction open if source is not transactional (such as FronTier)
187  if (!nsess.isTransactional()) nsess.transaction().start(true);
188  sessions.insert(std::make_pair(it->pfn,nsess));
189  } else nsess = (*p).second;
190  cond::MetaData metadata(nsess);
192  transaction.start(true);
193  std::string iovtoken = metadata.getToken(it->tag);
194  transaction.commit();
195  // owenship...
196  ProxyP proxy(proxyWrappers[ipb++]);
197  // instert in the map
198  m_proxies.insert(std::make_pair(it->recordname, proxy));
199  // initialize
200  proxy->lateInit(nsess,iovtoken,
201  it->labelname, it->pfn, it->tag
202  );
203  }
204 
205  // one loaded expose all other tags to the Proxy!
206  CondGetterFromESSource visitor(m_proxies);
207  ProxyMap::iterator b= m_proxies.begin();
208  ProxyMap::iterator e= m_proxies.end();
209  for (;b!=e;b++) {
210  (*b).second->proxy()->loadMore(visitor);
211 
214  if( recordKey.type() != edm::eventsetup::EventSetupRecordKey::TypeTag() ) {
215  findingRecordWithKey( recordKey );
216  usingRecordWithKey( recordKey );
217  }
218  }
219 
220  stats.nData=m_proxies.size();
221 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
list globaltag
Definition: align_cfg.py:6
DbTransaction & transaction()
Definition: DbSession.cc:153
void open(const std::string &connectionString, bool readOnly=false)
Definition: DbSession.cc:119
DbConnectionConfiguration & configuration()
Definition: DbConnection.cc:89
bool exists(std::string const &parameterName) const
checks if a parameter exists
void usingRecordWithKey(const EventSetupRecordKey &)
cond::DbConnection m_connection
void setParameters(const edm::ParameterSet &connectionPset)
void fillTagCollectionFromDB(const std::string &coraldb, const std::string &prefix, const std::string &postfix, const std::string &roottag, std::map< std::string, cond::TagMetadata > &replacement)
std::string labelname
Definition: TagMetadata.h:11
int start(bool readOnly=false)
start transaction
std::string tag
Definition: TagMetadata.h:8
bool isTransactional() const
Definition: DbSession.cc:144
vector< ParameterSet > Parameters
int k[5][pyjets_maxn]
TagCollection m_tagCollection
DbSession createSession() const
Definition: DbConnection.cc:72
double b
Definition: hdecay.h:120
std::string pfn
Definition: TagMetadata.h:9
heterocontainer::HCTypeTag TypeTag
ProxyMap m_proxies
string s
Definition: asciidump.py:422
std::string recordname
Definition: TagMetadata.h:10
tuple toGet
Definition: align_tpl.py:67
boost::shared_ptr< cond::DataProxyWrapperBase > ProxyP
T get(const Candidate &c)
Definition: component.h:56
void findingRecordWithKey(const eventsetup::EventSetupRecordKey &)
static HCTypeTag findType(char const *iTypeName)
find a type based on the types name, if not found will return default HCTypeTag
Definition: HCTypeTag.cc:126
unsigned int lastRun
CondDBESSource::~CondDBESSource ( )

Definition at line 224 of file CondDBESSource.cc.

References b, gather_cfg::cout, doDump, cond::BasePayloadProxy::gstats, m_proxies, CondDBESSource::Stats::nActualRefresh, CondDBESSource::Stats::nData, CondDBESSource::Stats::nRefresh, CondDBESSource::Stats::nRun, CondDBESSource::Stats::nSet, and stats.

224  {
225  //dump info FIXME: find a more suitable place...
226  if (doDump) {
227  std::cout << "CondDBESSource Statistics" << std::endl
228  << "DataProxy " << stats.nData
229  <<" setInterval " << stats.nSet
230  <<" Runs " << stats.nRun
231  <<" Refresh " << stats.nRefresh
232  <<" Actual Refresh " << stats.nActualRefresh;
233  std::cout << std::endl;
234  std::cout << "Global Proxy Statistics" << std::endl
235  << "proxy " << cond::BasePayloadProxy::gstats.nProxy
236  << " make " << cond::BasePayloadProxy::gstats.nMake
237  << " load " << cond::BasePayloadProxy::gstats.nLoad;
238  std::cout << std::endl;
239 
240 
241  ProxyMap::iterator b= m_proxies.begin();
242  ProxyMap::iterator e= m_proxies.end();
243  for (;b!=e;b++) {
244  dumpInfo(std::cout,(*b).first,*(*b).second);
245  std::cout << "\n" << std::endl;
246  }
247 
248  // FIXME
249  // We shall eventually close transaction and session...
250  }
251 }
double b
Definition: hdecay.h:120
ProxyMap m_proxies
tuple cout
Definition: gather_cfg.py:41

Member Function Documentation

void CondDBESSource::fillTagCollectionFromDB ( const std::string &  coraldb,
const std::string &  prefix,
const std::string &  postfix,
const std::string &  roottag,
std::map< std::string, cond::TagMetadata > &  replacement 
)
private

Definition at line 361 of file CondDBESSource.cc.

References cond::DbScopedTransaction::commit(), cond::DbConnection::createSession(), NewTree::fid, cond::TagCollectionRetriever::getTagCollection(), gen::k, cond::TagMetadata::labelname, m, m_connection, m_tagCollection, cond::TagMetadata::objectname, cond::DbSession::open(), cond::TagMetadata::pfn, cond::TagMetadata::recordname, python.CommonUtils::session, cond::DbScopedTransaction::start(), cond::TagMetadata::tag, and python.IdGenerator::transaction.

Referenced by CondDBESSource().

365  {
366  // std::cout<<"fillTagCollectionFromDB"<<std::endl;
367 
368 
369  std::set< cond::TagMetadata > tagcoll;
370 
371  if (!roottag.empty()) {
372  if (coraldb.empty())
373  throw cond::Exception(std::string("ESSource: requested global tag ")+roottag+" but not connection string given");
375  session.open( coraldb, true );
377  transaction.start(true);
378  cond::TagCollectionRetriever tagRetriever( session, prefix, postfix );
379  tagRetriever.getTagCollection(roottag,tagcoll);
380  transaction.commit();
381  }
382 
383  std::set<cond::TagMetadata>::iterator it;
384  std::set<cond::TagMetadata>::iterator itBeg=tagcoll.begin();
385  std::set<cond::TagMetadata>::iterator itEnd=tagcoll.end();
386 
387  // FIXME the logic is a bit perverse: can be surely linearized (at least simplified!) ....
388  for(it=itBeg; it!=itEnd; ++it){
389  std::string k=it->recordname+"@"+it->labelname;
390  std::map<std::string,cond::TagMetadata>::iterator fid=replacement.find(k);
391  if(fid != replacement.end()){
393  m.recordname=it->recordname;
394  m.labelname=it->labelname;
395  m.pfn=fid->second.pfn;
396  m.tag=fid->second.tag;
397  m.objectname=it->objectname;
398  m_tagCollection.insert(m);
399  replacement.erase(fid);
400  }else{
401  m_tagCollection.insert(*it);
402  }
403  }
404  std::map<std::string,cond::TagMetadata>::iterator itrep;
405  std::map<std::string,cond::TagMetadata>::iterator itrepBeg=replacement.begin();
406  std::map<std::string,cond::TagMetadata>::iterator itrepEnd=replacement.end();
407  for(itrep=itrepBeg; itrep!=itrepEnd; ++itrep){
408  //std::cout<<"appending"<<std::endl;
409  //std::cout<<"pfn "<<itrep->second.pfn<<std::endl;
410  //std::cout<<"objectname "<<itrep->second.objectname<<std::endl;
411  //std::cout<<"tag "<<itrep->second.tag<<std::endl;
412  //std::cout<<"recordname "<<itrep->second.recordname<<std::endl;
413  m_tagCollection.insert(itrep->second);
414  }
415 }
void open(const std::string &connectionString, bool readOnly=false)
Definition: DbSession.cc:119
std::string objectname
Definition: TagMetadata.h:12
cond::DbConnection m_connection
std::string labelname
Definition: TagMetadata.h:11
std::string tag
Definition: TagMetadata.h:8
int k[5][pyjets_maxn]
TagCollection m_tagCollection
DbSession createSession() const
Definition: DbConnection.cc:72
std::string pfn
Definition: TagMetadata.h:9
std::string recordname
Definition: TagMetadata.h:10
list fid
Definition: NewTree.py:51
void CondDBESSource::newInterval ( const edm::eventsetup::EventSetupRecordKey iRecordType,
const edm::ValidityInterval iInterval 
)
protectedvirtual

called when a new interval of validity occurs for iRecordType

Implements edm::eventsetup::DataProxyProvider.

Definition at line 351 of file CondDBESSource.cc.

References edm::eventsetup::DataProxyProvider::invalidateProxies().

353 {
354  //LogDebug ("CondDBESSource")<<"newInterval";
355  invalidateProxies(iRecordType);
356 }
void invalidateProxies(const EventSetupRecordKey &iRecordKey)
void CondDBESSource::registerProxies ( const edm::eventsetup::EventSetupRecordKey iRecordKey,
KeyedProxies aProxyList 
)
protectedvirtual

Implements edm::eventsetup::DataProxyProvider.

Definition at line 330 of file CondDBESSource.cc.

References b, combine::key, LogDebug, m_proxies, edm::eventsetup::EventSetupRecordKey::name(), and L1TEmulatorMonitor_cff::p.

330  {
331  std::string recordname=iRecordKey.name();
332 
333  ProxyMap::const_iterator b = m_proxies.lower_bound(recordname);
334  ProxyMap::const_iterator e = m_proxies.upper_bound(recordname);
335  if ( b == e) {
336  LogDebug ("CondDBESSource")<<"no DataProxy (Pluging) found for record "<<recordname;
337  return;
338  }
339 
340  for (ProxyMap::const_iterator p=b;p!=e;++p) {
341  if(0 != (*p).second.get()) {
342  edm::eventsetup::TypeTag type = (*p).second->type();
343  edm::eventsetup::DataKey key( type, edm::eventsetup::IdTags((*p).second->label().c_str()) );
344  aProxyList.push_back(KeyedProxies::value_type(key,(*p).second->edmProxy()));
345  }
346  }
347 }
#define LogDebug(id)
type
Definition: HCALResponse.h:22
Container::value_type value_type
double b
Definition: hdecay.h:120
ProxyMap m_proxies
list key
Definition: combine.py:13
void CondDBESSource::setIntervalFor ( const edm::eventsetup::EventSetupRecordKey iKey,
const edm::IOVSyncValue iTime,
edm::ValidityInterval oInterval 
)
protectedvirtual

Implements edm::EventSetupRecordIntervalFinder.

Definition at line 259 of file CondDBESSource.cc.

References b, doRefresh, edm::IOVSyncValue::eventID(), cond::fromIOVSyncValue(), edm::ValidityInterval::invalidInterval(), lastRun, cond::limitedIOVSyncValue(), LogDebug, m_proxies, max(), min, CondDBESSource::Stats::nActualRefresh, edm::eventsetup::EventSetupRecordKey::name(), CondDBESSource::Stats::nRefresh, CondDBESSource::Stats::nRun, CondDBESSource::Stats::nSet, L1TEmulatorMonitor_cff::p, edm::EventID::run(), stats, cond::TIMELIMIT(), upload_serial_tpl::timetype, and cond::toIOVSyncValue().

259  {
260 
261  stats.nSet++;
262 
263  std::string recordname=iKey.name();
265 
266  //FIXME use equal_range
267  ProxyMap::const_iterator b = m_proxies.lower_bound(recordname);
268  ProxyMap::const_iterator e = m_proxies.upper_bound(recordname);
269  if ( b == e) {
270  LogDebug ("CondDBESSource")<<"no DataProxy (Pluging) found for record "<<recordname;
271  return;
272  }
273 
274  // compute the smallest interval (assume all objects have the same timetype....)
275  cond::ValidityInterval recordValidity(1,cond::TIMELIMIT);
277  bool userTime=true;
278  for (ProxyMap::const_iterator p=b;p!=e;++p) {
279 
280  timetype = (*p).second->proxy()->timetype();
281 
282  cond::Time_t abtime = cond::fromIOVSyncValue(iTime,timetype);
283  userTime = (0==abtime);
284 
285  //std::cout<<"abtime "<<abtime<<std::endl;
286 
287  if (userTime) return; // oInterval invalid to avoid that make is called...
288 
289  // refresh if required...
290  if (doRefresh) {
291  LogDebug ("CondDBESSource") << "Refresh " << recordname << " " << iTime.eventID() << std::endl;
292  stats.nActualRefresh += (*p).second->proxy()->refresh();
293  stats.nRefresh++;
294  }
295 
296  {
297  // not required anymore, keep here for the time being
298  if(iTime.eventID().run()!=lastRun) {
299  lastRun=iTime.eventID().run();
300  stats.nRun++;
301  }
302  }
303 
304 
305  //query the IOVSequence
306  cond::ValidityInterval validity = (*p).second->proxy()->setIntervalFor(abtime);
307 
308  recordValidity.first = std::max(recordValidity.first,validity.first);
309  recordValidity.second = std::min(recordValidity.second,validity.second);
310 
311  LogDebug ("CondDBESSource") <<"setting validity " << recordname << " "
312  <<recordValidity.first<<" "<<recordValidity.second<<" for ibtime "<<abtime<< std::endl;
313 
314  }
315 
316  // to force refresh we set end-value to the minimum such an IOV can exend to: current run or lumiblock
317 
318  if ( (!userTime) && recordValidity.second!=0) {
319  edm::IOVSyncValue start = cond::toIOVSyncValue(recordValidity.first, timetype, true);
320  edm::IOVSyncValue stop = doRefresh ? cond::limitedIOVSyncValue (iTime, timetype)
321  : cond::toIOVSyncValue(recordValidity.second, timetype, false);
322 
323  oInterval = edm::ValidityInterval( start, stop );
324  }
325 }
#define LogDebug(id)
RunNumber_t run() const
Definition: EventID.h:42
edm::IOVSyncValue limitedIOVSyncValue(cond::Time_t time, cond::TimeType timetype)
const EventID & eventID() const
Definition: IOVSyncValue.h:42
std::pair< Time_t, Time_t > ValidityInterval
Definition: Time.h:19
#define min(a, b)
Definition: mlp_lapack.h:161
TimeType
Definition: Time.h:21
U second(std::pair< T, U > const &p)
edm::IOVSyncValue toIOVSyncValue(cond::Time_t time, cond::TimeType timetype, bool startOrStop)
unsigned long long Time_t
Definition: Time.h:16
const T & max(const T &a, const T &b)
const Time_t TIMELIMIT(std::numeric_limits< Time_t >::max())
double b
Definition: hdecay.h:120
ProxyMap m_proxies
static const ValidityInterval & invalidInterval()
cond::Time_t fromIOVSyncValue(edm::IOVSyncValue const &time, cond::TimeType timetype)
unsigned int lastRun

Member Data Documentation

bool CondDBESSource::doDump
private

Definition at line 80 of file CondDBESSource.h.

Referenced by ~CondDBESSource().

bool CondDBESSource::doRefresh
private

Definition at line 78 of file CondDBESSource.h.

Referenced by setIntervalFor().

unsigned int CondDBESSource::lastRun
private

Definition at line 77 of file CondDBESSource.h.

Referenced by setIntervalFor().

cond::DbConnection CondDBESSource::m_connection
private

Definition at line 57 of file CondDBESSource.h.

Referenced by CondDBESSource(), and fillTagCollectionFromDB().

ProxyMap CondDBESSource::m_proxies
private

Definition at line 60 of file CondDBESSource.h.

Referenced by CondDBESSource(), registerProxies(), setIntervalFor(), and ~CondDBESSource().

TagCollection CondDBESSource::m_tagCollection
private

Definition at line 65 of file CondDBESSource.h.

Referenced by CondDBESSource(), and fillTagCollectionFromDB().

Stats CondDBESSource::stats
private

Definition at line 75 of file CondDBESSource.h.

Referenced by CondDBESSource(), setIntervalFor(), and ~CondDBESSource().