| The Gaudi Framework v27r1

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

EventCollectionSelector.cpp
Go to the documentation of this file.
1 // Include files
2 #include "GaudiKernel/SmartIF.h"
3 #include "GaudiKernel/ObjectFactory.h"
4 #include "GaudiKernel/GenericAddress.h"
5 #include "GaudiKernel/IRegistry.h"
6 #include "GaudiKernel/INTupleSvc.h"
7 #include "GaudiKernel/ISvcLocator.h"
8 #include "GaudiKernel/IDataSourceMgr.h"
9 #include "GaudiKernel/IAddressCreator.h"
10 #include "GaudiKernel/ISelectStatement.h"
11 #include "GaudiKernel/NTuple.h"
12 #include "GaudiKernel/EventSelectorDataStream.h"
13
14 #include "EventCollectionSelector.h"
15
16 #include <memory>
17
18 DECLARE_COMPONENT(EventCollectionSelector)
19
20
25 class EventCollectionContext : public IEvtSelector::Context {
26 public:
27 typedef std::list<std::string> ListName;
28 private:
29 GenericAddress* m_pAddressBuffer = nullptr;
30 const EventCollectionSelector* m_pSelector = nullptr;
31 ListName m_files;
32 std::string m_criteria;
33 ListName::const_iterator m_fileIterator;
34 std::string m_currentInput;
35
36 public:
38 EventCollectionContext(const EventCollectionSelector* pSelector);
40 ~EventCollectionContext() override;
41 const std::string& currentInput() const {
42 return m_currentInput;
43 }
44 void setCurrentInput(const std::string& v) {
45 m_currentInput = v;
46 }
47 ListName& files() {
48 return m_files;
49 }
50 void* identifier() const override {
51 return (void*)m_pSelector;
52 }
53 void setCriteria(const std::string& crit) {
54 m_criteria = crit;
55 }
56 ListName::const_iterator fileIterator() {
57 return m_fileIterator;
58 }
59 void setFileIterator(ListName::const_iterator new_iter)
60 { m_fileIterator = new_iter; }
61 };
62
63 EventCollectionContext::~EventCollectionContext() {
64 m_pAddressBuffer->release();
65 }
66
67 EventCollectionContext::EventCollectionContext(const EventCollectionSelector* pSelector)
68 : m_pSelector(pSelector)
69 {
70 m_pAddressBuffer = new GenericAddress();
71 m_pAddressBuffer->addRef();
72 }
73
74 // Standard constructor
75 EventCollectionSelector::EventCollectionSelector(const std::string& name, ISvcLocator* svcloc )
76 : base_class(name, svcloc)
77 {
78 declareProperty("CnvService", m_tupleSvcName = "EvtTupleSvc");
79 declareProperty("Authentication",m_authentication= "");
80 declareProperty("Container", m_cntName = "B2PiPi");
81 declareProperty("Item", m_itemName = "Address");
82 declareProperty("Criteria", m_criteria = "");
83 declareProperty("DB", m_database = "");
84 declareProperty("DbType", m_dbType = "");
85 declareProperty("DbService", m_dbSvc = "");
86 declareProperty("Function", m_statement= "NTuple::Selector");
87 }
88
89 // IService implementation: Db event selector override
90 StatusCode EventCollectionSelector::initialize() {
91 // Initialize base class
92 StatusCode status = Service::initialize();
93 if ( !status.isSuccess() ) {
94 error() << "Error initializing base class Service!" << endmsg;
95 return status;
96 }
97 m_pAddrCreator = serviceLocator()->service("EventPersistencySvc");
98 if(!m_pAddrCreator) {
99 error() << "Unable to locate IAddressCreator interface of " << "EventPersistencySvc" << endmsg;
100 return status;
101 }
102 m_tupleSvc = serviceLocator()->service(m_tupleSvcName);
103 if( !m_tupleSvc ) {
104 error() << "Unable to locate INTupleSvc interface of " << m_tupleSvcName << endmsg;
105 return status;
106 }
107 return status;
108 }
109
110 // Connect collection to selector
111 StatusCode
112 EventCollectionSelector::connectDataSource(const std::string& db, const std::string& /* typ */ ) const {
113 StatusCode status = StatusCode::FAILURE;
114 SmartIF<IDataSourceMgr> svc(m_tupleSvc);
115 if ( svc && !db.empty() ) {
116 std::string ident = name() + ' ';
117 ident += "DATAFILE='" + m_database.substr(5) + "' ";
118 if ( !m_dbSvc.empty() )
119 ident += "SVC='" + m_dbSvc + "' ";
120 else
121 ident += "TYP='" + m_dbType + "' ";
122 ident += "OPT='READ' ";
123 if ( m_authentication.length() > 0 ) {
124 ident += "AUTH='" + m_authentication + "' ";
125 }
126 status = svc->connect(ident);
127 }
128 return status;
129 }
130
132 StatusCode
133 EventCollectionSelector::connectTuple(const std::string& nam, const std::string& itName, NTuple::Tuple*& tup, NTuple::Item<IOpaqueAddress*>*& item) const {
134 std::string top = "/NTUPLES/" + name() + '/' + nam;
135 StatusCode status = m_tupleSvc->retrieveObject(top, (DataObject*&)tup);
136 if ( status.isSuccess() ) {
137 item = new NTuple::Item<IOpaqueAddress*>();
138 status = tup->item(itName, *item);
139 if ( status.isSuccess() ) return status;
140 error() << "Item " << itName << " is not part of the collection:" << top << endmsg;
141 delete item;
142 item = nullptr;
143 }
144 else {
145 error() << "Cannot connect to collection:" << top << endmsg;
146 }
147 tup = nullptr;
148 return status;
149 }
150
152 StatusCode
153 EventCollectionSelector::connectStatement(const std::string& typ, const std::string& crit, INTuple* tuple) const {
154 std::string seltyp = typ;
155 if ( !seltyp.empty() || !crit.empty() ) {
156 if ( !crit.empty() && seltyp.length() == 0 ) seltyp = "NTuple::Selector";
157 SmartIF<ISelectStatement> stmt(ObjFactory::create(seltyp, serviceLocator()));
158 if ( stmt ) {
159 if ( !crit.empty() ) stmt->setCriteria(crit);
160 tuple->attachSelector(stmt).ignore();
161 return StatusCode::SUCCESS;
162 }
163 return StatusCode::FAILURE;
164 }
165 return StatusCode::SUCCESS;
166 }
167
169 StatusCode EventCollectionSelector::getNextRecord(NTuple::Tuple* tuple) const {
170 StatusCode status = StatusCode::FAILURE;
171 if ( tuple ) {
172 do {
173 status = m_tupleSvc->readRecord(tuple);
174 if ( status.isSuccess() ) {
175 ISelectStatement* statement = tuple->selector();
176 bool use_it = (statement) ? (*statement)(tuple) : true;
177 if ( use_it ) {
178 return status;
179 }
180 }
181 } while ( status.isSuccess() );
182 }
183 return status;
184 }
185
187 StatusCode EventCollectionSelector::getPreviousRecord(NTuple::Tuple* tuple ) const {
188 StatusCode status = StatusCode::FAILURE;
189 if ( tuple ) {
190 IRegistry* pReg = tuple->registry();
191 if ( pReg ) {
192 IOpaqueAddress* pAddr = pReg->address();
193 if ( pAddr ) {
194 long* ip = (long*)pAddr->ipar();
195 do {
196 if ( ip[1] > 1 ) {
197 ip[1] -= 2;
198 status = m_tupleSvc->readRecord(tuple);
199 if ( status.isSuccess() ) {
200 ISelectStatement* statement = tuple->selector();
201 bool use_it = (statement) ? (*statement)(tuple) : true;
202 if ( use_it ) {
203 return status;
204 }
205 }
206 }
207 else {
208 return StatusCode::FAILURE;
209 }
210 } while ( status.isSuccess() );
211 }
212 }
213 }
214 return StatusCode::FAILURE;
215 }
216
217 // Connect collection to selector
218 StatusCode EventCollectionSelector::connectCollection(MyContextType* ctxt) const
219 {
220 if ( ctxt ) {
221 StatusCode status = connectDataSource(m_database, m_dbType);
222 if ( status.isSuccess() ) {
223 status = connectTuple(m_cntName, m_itemName, ctxt->tuple, ctxt->item);
224 if ( status.isSuccess() ) {
225 status = connectStatement(m_statement, m_criteria, ctxt->tuple);
226 if ( status.isSuccess() ) {
227 *(ctxt->item) = 0;
228 return status;
229 }
230 }
231 }
232 return status;
233 }
234 return StatusCode::FAILURE;
235 }
236
237 // Finalize service
238 StatusCode EventCollectionSelector::finalize() {
239 // release services
240 m_pAddrCreator = nullptr;
241 m_tupleSvc = nullptr;
242 return Service::finalize();
243 }
244
246 StatusCode
247 EventCollectionSelector::createContext(Context*& refpCtxt) const
248 {
249 refpCtxt = nullptr;
250 std::unique_ptr<MyContextType> ctxt(new MyContextType());
251 StatusCode status = connectCollection(ctxt.get());
252 if( !status.isSuccess() ) {
253 error() << "Unable to connect Collection file \"" << m_database << "\"" << endmsg;
254 return status;
255 }
256 refpCtxt = ctxt.release();
257 return StatusCode::SUCCESS;
258 }
259
261 StatusCode
262 EventCollectionSelector::next(Context& refCtxt) const
263 {
264 return next(refCtxt, 1);
265 }
266
268 StatusCode
269 EventCollectionSelector::next(Context& refCtxt,int jump) const
270 {
271 MyContextType *ctxt = dynamic_cast<MyContextType*>(&refCtxt);
272 if ( ctxt ) {
273 *(ctxt->item) = ctxt->addressBuffer;
274 StatusCode sc = StatusCode::SUCCESS;
275 for ( int i=0; i<jump && sc.isSuccess(); ++i ) {
276 sc = getNextRecord(ctxt->tuple);
277 }
278 return sc;
279 }
280 return StatusCode::FAILURE;
281 }
282
284 StatusCode
285 EventCollectionSelector::previous(Context& refCtxt) const
286 {
287 return previous(refCtxt, 1);
288 }
289
291 StatusCode
292 EventCollectionSelector::previous(Context& refCtxt,int jump) const
293 {
294 MyContextType *ctxt = dynamic_cast<MyContextType*>(&refCtxt);
295 if ( ctxt ) {
296 *(ctxt->item) = ctxt->addressBuffer;
297 StatusCode sc = StatusCode::SUCCESS;
298 for ( int i=0; i<jump && sc.isSuccess(); ++i ) {
299 sc = getPreviousRecord(ctxt->tuple);
300 }
301 return sc;
302 }
303 return StatusCode::FAILURE;
304 }
305
307 StatusCode
308 EventCollectionSelector::rewind(Context& /* refCtxt */ ) const
309 {
310 return StatusCode::FAILURE;
311 }
312
314 StatusCode
315 EventCollectionSelector::createAddress(const Context& refCtxt, IOpaqueAddress*& refpAddr) const
316 {
317 const MyContextType* ctxt = dynamic_cast<const MyContextType*>(&refCtxt);
318 if ( ctxt ) {
319 IOpaqueAddress* pA = *(ctxt->item);
320 if ( pA ) {
321 IOpaqueAddress* pAddress = nullptr;
322 StatusCode status = m_pAddrCreator->createAddress(pA->svcType(),
323 pA->clID(),
324 pA->par(),
325 pA->ipar(),
326 pAddress);
327 if ( status.isSuccess() ) {
328 refpAddr = pAddress;
329 return StatusCode::SUCCESS;
330 }
331 else {
332 error() << "Failed to access " << pA->par()[0]
333 << ":" << pA->par()[1]
334 << " SvcTyp:" << long(pA->svcType())
335 << " CLID:" << pA->clID()
336 << endmsg;
337 }
338 }
339 }
340 return StatusCode::FAILURE;
341 }
342
344 StatusCode
345 EventCollectionSelector::releaseContext(Context*& refCtxt) const
346 {
347 MyContextType *ctxt = dynamic_cast<MyContextType*>(refCtxt);
348 if ( ctxt ) {
349 delete ctxt;
350 ctxt = nullptr;
351 return StatusCode::SUCCESS;
352 }
353 return StatusCode::FAILURE;
354 }
355
358 StatusCode
359 EventCollectionSelector::resetCriteria(const std::string& cr,Context& refCtxt) const
360 {
361 MyContextType *ctxt = dynamic_cast<MyContextType*>(&refCtxt);
362 if ( ctxt ) {
363 ctxt->criteria = cr;
364 return StatusCode::SUCCESS;
365 }
366 return StatusCode::FAILURE;
367 }
368
370 StatusCode
371 EventCollectionSelector::last(Context& /* refCtxt */ ) const
372 {
373 return StatusCode::FAILURE;
374 }
EventCollectionSelector::m_tupleSvc
SmartIF< INTupleSvc > m_tupleSvc
Reference to Tuple service.
Definition: EventCollectionSelector.h:80
IOpaqueAddress::par
virtual const std::string * par() const =0
Retrieve String parameters.
Service::initialize
StatusCode initialize() override
Definition: Service.cpp:68
SmartIF
Small smart pointer class with automatic reference counting for IInterface.
Definition: IConverter.h:14
Service::serviceLocator
SmartIF< ISvcLocator > & serviceLocator() const override
Retrieve pointer to service locator.
Definition: Service.cpp:324
std::string::empty
T empty(T...args)
ISvcLocator
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
Definition: ISvcLocator.h:25
EventCollectionSelector::getNextRecord
virtual StatusCode getNextRecord(NTuple::Tuple *tuple) const
Read next record of the N-tuple.
Definition: EventCollectionSelector.cpp:169
gaudiComponentHelp.name
name
Definition: gaudiComponentHelp.py:28
Service::finalize
StatusCode finalize() override
Definition: Service.cpp:193
ISelectStatement
A select statement can either contain.
Definition: ISelectStatement.h:32
EventCollectionContext
Definition: EventCollectionSelector.cpp:25
IAddressCreator::createAddress
virtual StatusCode createAddress(long svc_type, const CLID &clid, const std::string *par, const unsigned long *ipar, IOpaqueAddress *&refpAddress)=0
Create a Generic address using explicit arguments to identify a single object.
EventCollectionContext::EventCollectionContext
EventCollectionContext(const EventCollectionSelector *pSelector)
Standard constructor.
Definition: EventCollectionSelector.cpp:67
IEvtSelector
The Event Selector Interface.
Definition: IEvtSelector.h:18
NTuple.h
GenericAddress::addRef
unsigned long addRef() override
Add reference to object.
Definition: GenericAddress.h:70
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:76
GenericAddress::release
unsigned long release() override
release reference to object
Definition: GenericAddress.h:74
EventCollectionSelector::connectDataSource
virtual StatusCode connectDataSource(const std::string &db, const std::string &typ) const
Connect collection's data source to selector.
Definition: EventCollectionSelector.cpp:112
EventCollectionContext::~EventCollectionContext
~EventCollectionContext() override
Standard destructor.
Definition: EventCollectionSelector.cpp:63
ObjectFactory.h
ISelectStatement.h
EventCollectionSelector::m_criteria
std::string m_criteria
Criteria.
Definition: EventCollectionSelector.h:91
EventCollectionSelector::previous
StatusCode previous(Context &refCtxt) const override
Get previous iteration item from the event loop context.
Definition: EventCollectionSelector.cpp:285
GenericAddress
Generic Transient Address.
Definition: GenericAddress.h:20
INTuple::selector
virtual ISelectStatement * selector()=0
Access selector.
merge_files.sc
int sc
Definition: merge_files.py:167
IOpaqueAddress::svcType
virtual long svcType() const =0
Retrieve service type.
EventCollectionSelector.h
EventCollectionContext::m_pAddressBuffer
GenericAddress * m_pAddressBuffer
Definition: EventCollectionSelector.cpp:29
IDataSourceMgr.h
DataObject::registry
IRegistry * registry() const
Get pointer to Registry.
Definition: DataObject.h:74
std::unique_ptr::release
T release(T...args)
DECLARE_COMPONENT
#define DECLARE_COMPONENT(type)
Definition: PluginService.h:36
EventCollectionSelector::releaseContext
StatusCode releaseContext(Context *&refCtxt) const override
Release existing event iteration context.
Definition: EventCollectionSelector.cpp:345
std::string
STL class.
INTuple
NTuple interface class definition.
Definition: INTuple.h:79
EventCollectionSelector::finalize
StatusCode finalize() override
Service override: Finalize Service.
Definition: EventCollectionSelector.cpp:238
IDataSourceMgr::connect
virtual StatusCode connect(const std::string &logon, std::string &identifier)=0
Connect data source.
EventCollectionSelector::m_tupleSvcName
std::string m_tupleSvcName
Name of the event collection service name.
Definition: EventCollectionSelector.h:83
EventCollectionSelector::m_cntName
std::string m_cntName
Container name.
Definition: EventCollectionSelector.h:87
ISvcLocator::service
StatusCode service(const Gaudi::Utils::TypeNameString &name, T *&svc, bool createIf=true)
Templated method to access a service by name.
Definition: ISvcLocator.h:78
Service::name
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:319
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:118
EventCollectionContext::fileIterator
ListName::const_iterator fileIterator()
Definition: EventCollectionSelector.cpp:56
EventCollectionSelector::MyContextType::tuple
NTuple::Tuple * tuple
Definition: EventCollectionSelector.h:47
EventCollectionContext::currentInput
const std::string & currentInput() const
Definition: EventCollectionSelector.cpp:41
EventCollectionSelector::last
StatusCode last(Context &refCtxt) const override
Access last item in the iteration.
Definition: EventCollectionSelector.cpp:371
EventCollectionSelector::next
StatusCode next(Context &refCtxt) const override
Get next iteration item from the event loop context.
Definition: EventCollectionSelector.cpp:262
IOpaqueAddress::clID
virtual const CLID & clID() const =0
Retrieve class information from link.
StatusCode::FAILURE
Definition: StatusCode.h:29
StatusCode::SUCCESS
Definition: StatusCode.h:30
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
EventCollectionSelector::MyContextType::criteria
std::string criteria
Definition: EventCollectionSelector.h:46
EventCollectionSelector::m_itemName
std::string m_itemName
Item name.
Definition: EventCollectionSelector.h:89
EventCollectionContext::setFileIterator
void setFileIterator(ListName::const_iterator new_iter)
Definition: EventCollectionSelector.cpp:59
SmartIF.h
EventCollectionSelector::resetCriteria
StatusCode resetCriteria(const std::string &cr, Context &c) const override
Will set a new criteria for the selection of the next list of events and will change the state of the...
Definition: EventCollectionSelector.cpp:359
EventSelectorDataStream.h
IRegistry.h
IRegistry
The IRegistry represents the entry door to the environment any data object residing in a transient da...
Definition: IRegistry.h:22
std::list< std::string >
EventCollectionContext::files
ListName & files()
Definition: EventCollectionSelector.cpp:47
IRegistry::address
virtual IOpaqueAddress * address() const =0
Retrieve opaque storage address.
EventCollectionSelector::m_dbType
std::string m_dbType
Database type identifier.
Definition: EventCollectionSelector.h:95
NTuple::Tuple
Abstract base class which allows the user to interact with the actual N tuple implementation.
Definition: NTuple.h:370
EventCollectionContext::setCurrentInput
void setCurrentInput(const std::string &v)
Definition: EventCollectionSelector.cpp:44
std::unique_ptr::get
T get(T...args)
EventCollectionSelector::m_dbSvc
std::string m_dbSvc
Database service (exclusive property with db type)
Definition: EventCollectionSelector.h:97
std::string::length
T length(T...args)
HiveAlgSequencer.top
tuple top
Definition: HiveAlgSequencer.py:29
class
#define class
Definition: AIDA_visibility_hack.h:24
std::unique_ptr
STL class.
IAddressCreator.h
EventCollectionSelector::m_database
std::string m_database
Datafile name.
Definition: EventCollectionSelector.h:93
EventCollectionSelector::getPreviousRecord
virtual StatusCode getPreviousRecord(NTuple::Tuple *tuple) const
Read next record of the N-tuple.
Definition: EventCollectionSelector.cpp:187
EventCollectionSelector
Definition of class EventCollectionSelector.
Definition: EventCollectionSelector.h:41
EventCollectionContext::m_files
ListName m_files
Definition: EventCollectionSelector.cpp:31
INTupleSvc::readRecord
virtual StatusCode readRecord(NTuple::Tuple *tuple)=0
Read single record from N tuple.
ana.item
tuple item
print s1,s2
Definition: ana.py:146
CommonMessaging
Definition: CommonMessaging.h:58
EventCollectionSelector::MyContextType::item
NTuple::Item< IOpaqueAddress * > * item
Definition: EventCollectionSelector.h:48
EventCollectionSelector::initialize
StatusCode initialize() override
Service override: Initialize service.
Definition: EventCollectionSelector.cpp:90
std::string::substr
T substr(T...args)
EventCollectionSelector::MyContextType::addressBuffer
IOpaqueAddress * addressBuffer
Definition: EventCollectionSelector.h:49
EventCollectionSelector::connectTuple
virtual StatusCode connectTuple(const std::string &nam, const std::string &itName, NTuple::Tuple *&tup, NTuple::Item< IOpaqueAddress * > *&item) const
Connect to existing N-tuple.
Definition: EventCollectionSelector.cpp:133
EventCollectionContext::ListName
std::list< std::string > ListName
Definition: EventCollectionSelector.cpp:27
EventCollectionSelector::createAddress
StatusCode createAddress(const Context &refCtxt, IOpaqueAddress *&refpAddr) const override
Create new Opaque address corresponding to the current record.
Definition: EventCollectionSelector.cpp:315
EventCollectionSelector::m_authentication
std::string m_authentication
Authentication string (if needed)
Definition: EventCollectionSelector.h:85
EventCollectionSelector::EventCollectionSelector
EventCollectionSelector(const std::string &name, ISvcLocator *svcloc)
Standard Constructor.
Definition: EventCollectionSelector.cpp:75
IOpaqueAddress
Opaque address interface definition.
Definition: IOpaqueAddress.h:23
EventCollectionSelector::rewind
StatusCode rewind(Context &refCtxt) const override
Rewind the dataset.
Definition: EventCollectionSelector.cpp:308
StatusCode::ignore
void ignore() const
Definition: StatusCode.h:108
Service::declareProperty
Property * declareProperty(const std::string &name, T &property, const std::string &doc="none") const
Declare the named property.
Definition: Service.h:215
EventCollectionSelector::m_pAddrCreator
SmartIF< IAddressCreator > m_pAddrCreator
Definition: EventCollectionSelector.h:81
INTuple::attachSelector
virtual StatusCode attachSelector(ISelectStatement *sel)=0
Attach selector.
NTuple::Item< IOpaqueAddress * >
EventCollectionContext::m_currentInput
std::string m_currentInput
Definition: EventCollectionSelector.cpp:34
EventCollectionSelector::connectCollection
virtual StatusCode connectCollection(MyContextType *ctxt) const
Connect collection to selector.
Definition: EventCollectionSelector.cpp:218
EventCollectionContext::m_fileIterator
ListName::const_iterator m_fileIterator
Definition: EventCollectionSelector.cpp:33
ISelectStatement::setCriteria
virtual void setCriteria(const std::string &crit)=0
Set the type.
DataObject
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:30
ana.i
list i
Definition: ana.py:128
GenericAddress.h
ISvcLocator.h
IOpaqueAddress::ipar
virtual const unsigned long * ipar() const =0
Access to generic link parameters.
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
EventCollectionContext::m_criteria
std::string m_criteria
Definition: EventCollectionSelector.cpp:32
EventCollectionContext::setCriteria
void setCriteria(const std::string &crit)
Definition: EventCollectionSelector.cpp:53
EventCollectionSelector::MyContextType
Definition: EventCollectionSelector.h:44
INTupleSvc.h
EventCollectionSelector::m_statement
std::string m_statement
Selector name.
Definition: EventCollectionSelector.h:99
EventCollectionSelector::createContext
StatusCode createContext(Context *&refpCtxt) const override
Create a new event loop context.
Definition: EventCollectionSelector.cpp:247
EventCollectionContext::identifier
void * identifier() const override
Definition: EventCollectionSelector.cpp:50
EventCollectionSelector::connectStatement
virtual StatusCode connectStatement(const std::string &typ, const std::string &crit, INTuple *tuple) const
Connect selection statement to refine data access.
Definition: EventCollectionSelector.cpp:153
IDataProviderSvc::retrieveObject
virtual StatusCode retrieveObject(IRegistry *pDirectory, const std::string &path, DataObject *&pObject)=0
Retrieve object identified by its directory entry.