Gaudi::RootEvtSelector Class Reference

Concrete event selector implementation to access ROOT files. More...

#include <GAUDIROOT/RootEvtSelector.h>

Inheritance diagram for Gaudi::RootEvtSelector:
Collaboration diagram for Gaudi::RootEvtSelector:

Public Member Functions

 RootEvtSelector (const std::string &name, ISvcLocator *svcloc)
 Service Constructor. More...
 
virtual ~RootEvtSelector ()=default
 Standard destructor. More...
 
virtual StatusCode initialize ()
 IService implementation: Db event selector override. More...
 
virtual StatusCode finalize ()
 IService implementation: Service finalization. More...
 
virtual StatusCode createContext (Context *&refpCtxt) const
 Create a new event loop context. More...
 
virtual StatusCode last (Context &refContext) const
 Access last item in the iteration. More...
 
virtual StatusCode next (Context &refCtxt) const
 Get next iteration item from the event loop context. More...
 
virtual StatusCode next (Context &refCtxt, int jump) const
 Get next iteration item from the event loop context, but skip jump elements. More...
 
virtual StatusCode previous (Context &refCtxt) const
 Get previous iteration item from the event loop context. More...
 
virtual StatusCode previous (Context &refCtxt, int jump) const
 Get previous iteration item from the event loop context, but skip jump elements. More...
 
virtual StatusCode rewind (Context &refCtxt) const
 Rewind the dataset. More...
 
virtual StatusCode createAddress (const Context &refCtxt, IOpaqueAddress *&) const
 Create new Opaque address corresponding to the current record. More...
 
virtual StatusCode releaseContext (Context *&refCtxt) const
 Release existing event iteration context. More...
 
virtual StatusCode resetCriteria (const std::string &cr, Context &c) const
 Will set a new criteria for the selection of the next list of events and will change the state of the context in a way to point to the new list. More...
 
 RootEvtSelector (const std::string &name, ISvcLocator *svcloc)
 Service Constructor. More...
 
virtual ~RootEvtSelector ()=default
 Standard destructor. More...
 
virtual StatusCode initialize ()
 IService implementation: Db event selector override. More...
 
virtual StatusCode finalize ()
 IService implementation: Service finalization. More...
 
virtual StatusCode createContext (Context *&refpCtxt) const
 Create a new event loop context. More...
 
virtual StatusCode last (Context &refContext) const
 Access last item in the iteration. More...
 
virtual StatusCode next (Context &refCtxt) const
 Get next iteration item from the event loop context. More...
 
virtual StatusCode next (Context &refCtxt, int jump) const
 Get next iteration item from the event loop context, but skip jump elements. More...
 
virtual StatusCode previous (Context &refCtxt) const
 Get previous iteration item from the event loop context. More...
 
virtual StatusCode previous (Context &refCtxt, int jump) const
 Get previous iteration item from the event loop context, but skip jump elements. More...
 
virtual StatusCode rewind (Context &refCtxt) const
 Rewind the dataset. More...
 
virtual StatusCode createAddress (const Context &refCtxt, IOpaqueAddress *&) const
 Create new Opaque address corresponding to the current record. More...
 
virtual StatusCode releaseContext (Context *&refCtxt) const
 Release existing event iteration context. More...
 
virtual StatusCode resetCriteria (const std::string &cr, Context &c) const
 Will set a new criteria for the selection of the next list of events and will change the state of the context in a way to point to the new list. More...
 
- Public Member Functions inherited from extends< BASE, Interfaces >
void * i_cast (const InterfaceID &tid) const override
 Implementation of IInterface::i_cast. More...
 
StatusCode queryInterface (const InterfaceID &ti, void **pp) override
 Implementation of IInterface::queryInterface. More...
 
std::vector< std::string > getInterfaceNames () const override
 Implementation of IInterface::getInterfaceNames. More...
 
 ~extends () override=default
 Virtual destructor. More...
 
void * i_cast (const InterfaceID &tid) const override
 Implementation of IInterface::i_cast. More...
 
StatusCode queryInterface (const InterfaceID &ti, void **pp) override
 Implementation of IInterface::queryInterface. More...
 
std::vector< std::string > getInterfaceNames () const override
 Implementation of IInterface::getInterfaceNames. More...
 
 ~extends () override=default
 Virtual destructor. More...
 
- Public Member Functions inherited from extend_interfaces< Interfaces...>
 ~extend_interfaces () override=default
 Virtual destructor. More...
 
 ~extend_interfaces () override=default
 Virtual destructor. More...
 

Protected Attributes

RootCnvSvcm_dbMgr
 Reference to the corresponding conversion service. More...
 
CLID m_rootCLID
 Class id of root node to create opaque address. More...
 
std::string m_persName
 Property; Name of the persistency service to search for conversion service. More...
 
std::string m_cnvSvcName
 Property; Name of the concversion service used to create opaque addresses. More...
 
std::string m_rootName
 Property: Name of the ROOT entry name. More...
 
std::string m_criteria
 Property: File criteria to define item iteration. More...
 
std::string m_dummy
 Property: dummy to fake backwards compatibility. More...
 

Private Member Functions

StatusCode error (const std::string &msg) const
 Helper method to issue error messages. More...
 
StatusCode error (const std::string &msg) const
 Helper method to issue error messages. More...
 

Additional Inherited Members

- Public Types inherited from extends< BASE, Interfaces >
using base_class = extends
 Typedef to this class. More...
 
using extend_interfaces_base = extend_interfaces< Interfaces...>
 Typedef to the base of this class. More...
 
using base_class = extends
 Typedef to this class. More...
 
using extend_interfaces_base = extend_interfaces< Interfaces...>
 Typedef to the base of this class. More...
 
- Public Types inherited from extend_interfaces< Interfaces...>
using ext_iids = typename Gaudi::interface_list_cat< typename Interfaces::ext_iids...>::type
 take union of the ext_iids of all Interfaces... More...
 
using ext_iids = typename Gaudi::interface_list_cat< typename Interfaces::ext_iids...>::type
 take union of the ext_iids of all Interfaces... More...
 

Detailed Description

Concrete event selector implementation to access ROOT files.

Author
M.Frank
Version
1.0
Date
20/12/2009

Definition at line 39 of file RootEvtSelector.h.

Constructor & Destructor Documentation

RootEvtSelector::RootEvtSelector ( const std::string &  name,
ISvcLocator svcloc 
)

Service Constructor.

Definition at line 99 of file RootEvtSelector.cpp.

100 : base_class(name, svcloc), m_rootCLID(CLID_NULL)
101 {
102  m_cnvSvcName = "Gaudi::RootCnvSvc/RootCnvSvc";
103  m_persName = "EventPersistencySvc";
104  declareProperty("EvtPersistencySvc",m_persName="EventPersistencySvc");
105  declareProperty("DbType",m_dummy);
106 }
std::string m_persName
Property; Name of the persistency service to search for conversion service.
std::string m_dummy
Property: dummy to fake backwards compatibility.
extends base_class
Typedef to this class.
Definition: extends.h:14
std::string m_cnvSvcName
Property; Name of the concversion service used to create opaque addresses.
CLID m_rootCLID
Class id of root node to create opaque address.
virtual Gaudi::RootEvtSelector::~RootEvtSelector ( )
virtualdefault

Standard destructor.

Gaudi::RootEvtSelector::RootEvtSelector ( const std::string &  name,
ISvcLocator svcloc 
)

Service Constructor.

virtual Gaudi::RootEvtSelector::~RootEvtSelector ( )
virtualdefault

Standard destructor.

Member Function Documentation

StatusCode RootEvtSelector::createAddress ( const Context &  refCtxt,
IOpaqueAddress *&  pAddr 
) const
virtual

Create new Opaque address corresponding to the current record.

Parameters
refCtxt[IN/OUT] Reference to the context
Returns
StatusCode indicating success or failure

Definition at line 271 of file RootEvtSelector.cpp.

271  {
272  const RootEvtSelectorContext* pctxt = dynamic_cast<const RootEvtSelectorContext*>(&ctxt);
273  if ( pctxt ) {
274  long ent = pctxt->entry();
275  if ( ent >= 0 ) {
276  auto fileit = pctxt->fileIterator();
277  if ( fileit != pctxt->files().end() ) {
278  const string par[2] = {pctxt->fid(), m_rootName};
279  const unsigned long ipar[2] = {0,(unsigned long)ent};
280  return m_dbMgr->createAddress(m_dbMgr->repSvcType(),m_rootCLID,&par[0],&ipar[0],pAddr);
281  }
282  }
283  }
284  pAddr = nullptr;
285  return StatusCode::FAILURE;
286 }
const Files & files() const
Access to the file container.
Files::const_iterator fileIterator() const
Access to the file iterator.
virtual StatusCode createAddress(long svc_type, const CLID &clid, const std::string *par, const unsigned long *ip, IOpaqueAddress *&refpAddress)
IAddressCreator implementation: Address creation.
Definition: RootCnvSvc.cpp:389
virtual long repSvcType() const
Retrieve the class type of the data store the converter uses.
ROOT specific event selector context.
const std::string & fid() const
Access connection fid.
RootCnvSvc * m_dbMgr
Reference to the corresponding conversion service.
CLID m_rootCLID
Class id of root node to create opaque address.
long entry() const
Access to the current event entry number.
std::string m_rootName
Property: Name of the ROOT entry name.
virtual StatusCode Gaudi::RootEvtSelector::createAddress ( const Context &  refCtxt,
IOpaqueAddress *&   
) const
virtual

Create new Opaque address corresponding to the current record.

Parameters
refCtxt[IN/OUT] Reference to the context
Returns
StatusCode indicating success or failure
StatusCode RootEvtSelector::createContext ( Context *&  refpCtxt) const
virtual

Create a new event loop context.

Parameters
refpCtxt[IN/OUT] Reference to pointer to store the context
Returns
StatusCode indicating success or failure

Definition at line 164 of file RootEvtSelector.cpp.

164  {
165  refpCtxt = new RootEvtSelectorContext(this);
166  return StatusCode::SUCCESS;
167 }
ROOT specific event selector context.
virtual StatusCode Gaudi::RootEvtSelector::createContext ( Context *&  refpCtxt) const
virtual

Create a new event loop context.

Parameters
refpCtxt[IN/OUT] Reference to pointer to store the context
Returns
StatusCode indicating success or failure
StatusCode RootEvtSelector::error ( const std::string &  msg) const
private

Helper method to issue error messages.

Definition at line 109 of file RootEvtSelector.cpp.

109  {
110  MsgStream log(msgSvc(), name());
111  log << MSG::ERROR << msg << endmsg;
112  return StatusCode::FAILURE;
113 }
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
StatusCode Gaudi::RootEvtSelector::error ( const std::string &  msg) const
private

Helper method to issue error messages.

virtual StatusCode Gaudi::RootEvtSelector::finalize ( )
virtual

IService implementation: Service finalization.

StatusCode RootEvtSelector::finalize ( )
virtual

IService implementation: Service finalization.

Definition at line 156 of file RootEvtSelector.cpp.

156  {
157  // Initialize base class
158  if ( m_dbMgr ) m_dbMgr->release();
159  m_dbMgr = nullptr; // release
160  return Service::finalize();
161 }
StatusCode finalize() override
Definition: Service.cpp:188
RootCnvSvc * m_dbMgr
Reference to the corresponding conversion service.
StatusCode RootEvtSelector::initialize ( )
virtual

IService implementation: Db event selector override.

Definition at line 116 of file RootEvtSelector.cpp.

116  {
117  // Initialize base class
118  StatusCode status = Service::initialize();
119  if ( !status.isSuccess() ) {
120  return error("Error initializing base class Service!");
121  }
122 
123  auto ipers = serviceLocator()->service<IPersistencySvc>(m_persName);
124  if( !ipers ) {
125  return error("Unable to locate IPersistencySvc interface of "+m_persName);
126  }
127  IConversionSvc *cnvSvc = nullptr;
129  status = ipers->getService(itm.name(),cnvSvc);
130  if( !status.isSuccess() ) {
131  status = ipers->getService(itm.type(),cnvSvc);
132  if( !status.isSuccess() ) {
133  return error("Unable to locate IConversionSvc interface of database type "+m_cnvSvcName);
134  }
135  }
136  m_dbMgr = dynamic_cast<RootCnvSvc*>(cnvSvc);
137  if( !m_dbMgr ) {
138  cnvSvc->release();
139  return error("Unable to localize service:"+m_cnvSvcName);
140  }
141  m_dbMgr->addRef();
142 
143  // Get DataSvc
144  auto eds = serviceLocator()->service<IDataManagerSvc>("EventDataSvc");
145  if( !eds ) {
146  return error("Unable to localize service EventDataSvc");
147  }
148  m_rootCLID = eds->rootCLID();
149  m_rootName = eds->rootName();
150  MsgStream log(msgSvc(), name());
151  log << MSG::DEBUG << "Selection root:" << m_rootName << " CLID:" << m_rootCLID << endmsg;
152  return status;
153 }
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
StatusCode initialize() override
Definition: Service.cpp:63
std::string m_persName
Property; Name of the persistency service to search for conversion service.
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
tuple itm
Definition: ana.py:57
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:76
Description:
Definition: RootCnvSvc.h:52
Helper class to parse a string of format "type/name".
Definition: TypeNameString.h:9
std::string m_cnvSvcName
Property; Name of the concversion service used to create opaque addresses.
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
virtual unsigned long release()=0
Release Interface instance.
StatusCode error(const std::string &msg) const
Helper method to issue error messages.
RootCnvSvc * m_dbMgr
Reference to the corresponding conversion service.
Data persistency service interface.
CLID m_rootCLID
Class id of root node to create opaque address.
std::string m_rootName
Property: Name of the ROOT entry name.
virtual StatusCode Gaudi::RootEvtSelector::initialize ( )
virtual

IService implementation: Db event selector override.

virtual StatusCode Gaudi::RootEvtSelector::last ( Context &  refContext) const
virtual

Access last item in the iteration.

Parameters
refContext[IN/OUT] Reference to the Context object.
StatusCode RootEvtSelector::last ( Context &  refContext) const
virtual

Access last item in the iteration.

Parameters
refContext[IN/OUT] Reference to the Context object.

Definition at line 170 of file RootEvtSelector.cpp.

170  {
171  return StatusCode::FAILURE;
172 }
virtual StatusCode Gaudi::RootEvtSelector::next ( Context &  refCtxt) const
virtual

Get next iteration item from the event loop context.

Parameters
refCtxt[IN/OUT] Reference to the context
Returns
StatusCode indicating success or failure
StatusCode RootEvtSelector::next ( Context &  refCtxt) const
virtual

Get next iteration item from the event loop context.

Parameters
refCtxt[IN/OUT] Reference to the context
Returns
StatusCode indicating success or failure

Definition at line 175 of file RootEvtSelector.cpp.

175  {
176  RootEvtSelectorContext* pCtxt = dynamic_cast<RootEvtSelectorContext*>(&ctxt);
177  if ( pCtxt ) {
178  TBranch* b = pCtxt->branch();
179  if ( !b ) {
180  auto fileit = pCtxt->fileIterator();
181  pCtxt->setBranch(nullptr);
182  pCtxt->setEntry(-1);
183  if ( fileit != pCtxt->files().end() ) {
184  RootDataConnection* con=nullptr;
185  string in = *fileit;
187  if ( sc.isSuccess() ) {
188  string section = m_rootName[0] == '/' ? m_rootName.substr(1) : m_rootName;
189  b = con->getBranch(section,m_rootName);
190  if ( b ) {
191  pCtxt->setFID(con->fid());
192  pCtxt->setBranch(b);
193  return next(ctxt);
194  }
195  }
196  m_dbMgr->disconnect(in).ignore();
197  pCtxt->setFileIterator(++fileit);
198  return next(ctxt);
199  }
200  return StatusCode::FAILURE;
201  }
202  long ent = pCtxt->entry();
203  Long64_t nent = b->GetEntries();
204  if ( nent > (ent+1) ) {
205  pCtxt->setEntry(++ent);
206  return StatusCode::SUCCESS;
207  }
208  auto fit = pCtxt->fileIterator();
209  pCtxt->setFileIterator(++fit);
210  pCtxt->setEntry(-1);
211  pCtxt->setBranch(nullptr);
212  pCtxt->setFID("");
213  return next(ctxt);
214  }
215  return StatusCode::FAILURE;
216 }
const Files & files() const
Access to the file container.
Files::const_iterator fileIterator() const
Access to the file iterator.
const std::string & fid() const
Access file id.
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:76
virtual StatusCode disconnect(const std::string &dbName)
Disconnect from an existing data stream.
ROOT specific event selector context.
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
TBranch * getBranch(const std::string &section, const std::string &branch_name)
Access data branch by name: Get existing branch in read only mode.
void setBranch(TBranch *b)
Set the top level branch (typically /Event) used to iterate.
StatusCode connectDatabase(const std::string &dataset, int mode, RootDataConnection **con)
Connect the output file to the service with open mode.
void setEntry(long e)
Set current event entry number.
void setFID(const std::string &fid)
Set connection FID.
RootCnvSvc * m_dbMgr
Reference to the corresponding conversion service.
void setFileIterator(Files::const_iterator i)
Set file iterator.
TBranch * branch() const
Access to the top level branch (typically /Event) used to iterate.
void ignore() const
Definition: StatusCode.h:108
Concrete implementation of the IDataConnection interface to access ROOT files.
long entry() const
Access to the current event entry number.
virtual StatusCode next(Context &refCtxt) const
Get next iteration item from the event loop context.
std::string m_rootName
Property: Name of the ROOT entry name.
virtual StatusCode Gaudi::RootEvtSelector::next ( Context &  refCtxt,
int  jump 
) const
virtual

Get next iteration item from the event loop context, but skip jump elements.

Parameters
refCtxt[IN/OUT] Reference to the context
Returns
StatusCode indicating success or failure
StatusCode RootEvtSelector::next ( Context &  refCtxt,
int  jump 
) const
virtual

Get next iteration item from the event loop context, but skip jump elements.

Parameters
refCtxt[IN/OUT] Reference to the context
Returns
StatusCode indicating success or failure

Definition at line 219 of file RootEvtSelector.cpp.

219  {
220  if ( jump > 0 ) {
221  for ( int i = 0; i < jump; ++i ) {
222  StatusCode status = next(ctxt);
223  if ( !status.isSuccess() ) {
224  return status;
225  }
226  }
227  return StatusCode::SUCCESS;
228  }
229  return StatusCode::FAILURE;
230 }
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:76
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
list i
Definition: ana.py:128
virtual StatusCode next(Context &refCtxt) const
Get next iteration item from the event loop context.
StatusCode RootEvtSelector::previous ( Context &  refCtxt) const
virtual

Get previous iteration item from the event loop context.

Parameters
refCtxt[IN/OUT] Reference to the context
jump[IN] Number of events to be skipped
Returns
StatusCode indicating success or failure

Definition at line 233 of file RootEvtSelector.cpp.

233  {
234  return error("EventSelector Iterator, operator -- not supported ");
235 }
StatusCode error(const std::string &msg) const
Helper method to issue error messages.
virtual StatusCode Gaudi::RootEvtSelector::previous ( Context &  refCtxt) const
virtual

Get previous iteration item from the event loop context.

Parameters
refCtxt[IN/OUT] Reference to the context
jump[IN] Number of events to be skipped
Returns
StatusCode indicating success or failure
virtual StatusCode Gaudi::RootEvtSelector::previous ( Context &  refCtxt,
int  jump 
) const
virtual

Get previous iteration item from the event loop context, but skip jump elements.

Parameters
refCtxt[IN/OUT] Reference to the context
jump[IN] Number of events to be skipped
Returns
StatusCode indicating success or failure
StatusCode RootEvtSelector::previous ( Context &  refCtxt,
int  jump 
) const
virtual

Get previous iteration item from the event loop context, but skip jump elements.

Parameters
refCtxt[IN/OUT] Reference to the context
jump[IN] Number of events to be skipped
Returns
StatusCode indicating success or failure

Definition at line 238 of file RootEvtSelector.cpp.

238  {
239  if ( jump > 0 ) {
240  for ( int i = 0; i < jump; ++i ) {
241  StatusCode status = previous(ctxt);
242  if ( !status.isSuccess() ) {
243  return status;
244  }
245  }
246  return StatusCode::SUCCESS;
247  }
248  return StatusCode::FAILURE;
249 }
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:76
virtual StatusCode previous(Context &refCtxt) const
Get previous iteration item from the event loop context.
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
list i
Definition: ana.py:128
virtual StatusCode Gaudi::RootEvtSelector::releaseContext ( Context *&  refCtxt) const
virtual

Release existing event iteration context.

Parameters
refCtxt[IN/OUT] Reference to the context
Returns
StatusCode indicating success or failure
StatusCode RootEvtSelector::releaseContext ( Context *&  refCtxt) const
virtual

Release existing event iteration context.

Parameters
refCtxt[IN/OUT] Reference to the context
Returns
StatusCode indicating success or failure

Definition at line 289 of file RootEvtSelector.cpp.

289  {
290  RootEvtSelectorContext* pCtxt = dynamic_cast<RootEvtSelectorContext*>(ctxt);
291  if ( pCtxt ) {
292  delete pCtxt;
293  return StatusCode::SUCCESS;
294  }
295  return StatusCode::FAILURE;
296 }
ROOT specific event selector context.
StatusCode RootEvtSelector::resetCriteria ( const std::string &  cr,
Context &  c 
) const
virtual

Will set a new criteria for the selection of the next list of events and will change the state of the context in a way to point to the new list.

Parameters
crThe new criteria string.
cReference pointer to the Context object.

Definition at line 301 of file RootEvtSelector.cpp.

302 {
303  MsgStream log(msgSvc(), name());
304  RootEvtSelectorContext* ctxt = dynamic_cast<RootEvtSelectorContext*>(&context);
305  string db, typ, item, sel, stmt, aut, addr;
306  if ( ctxt ) {
307  if ( criteria.compare(0,5,"FILE ")==0 ) {
308  // The format for the criteria is:
309  // FILE filename1, filename2 ...
310  db = criteria.substr(5);
311  }
312  else {
313  using Parser = Gaudi::Utils::AttribStringParser;
314  for(auto attrib: Parser(criteria)) {
315  string tmp = attrib.tag.substr(0,3);
316  if(tmp=="DAT") {
317  db = std::move(attrib.value);
318  }
319  else if(tmp=="OPT") {
320  if(attrib.value.compare(0, 3,"REA") != 0) {
321  log << MSG::ERROR << "Option:\"" << attrib.value << "\" not valid" << endmsg;
322  return StatusCode::FAILURE;
323  }
324  }
325  else if (tmp=="TYP") {
326  typ = std::move(attrib.value);
327  }
328  else if(tmp=="ADD") {
329  item = std::move(attrib.value);
330  }
331  else if(tmp=="SEL") {
332  sel = std::move(attrib.value);
333  }
334  else if(tmp=="FUN") {
335  stmt = std::move(attrib.value);
336  }
337  else if(tmp=="AUT") {
338  aut = std::move(attrib.value);
339  }
340  else if(tmp=="COL") {
341  addr = std::move(attrib.value);
342  }
343  }
344  }
345  // It's now time to parse the criteria for the event selection
346  // The format for the criteria is:
347  // FILE filename1, filename2 ...
348  // JOBID number1-number2, number3, ...
350  string rest = db;
351  files.clear();
352  while(true) {
353  int ipos = rest.find_first_not_of(" ,");
354  if (ipos == -1 ) break;
355  rest = rest.substr(ipos,string::npos);// remove blanks before
356  int lpos = rest.find_first_of(" ,"); // locate next blank
357  files.push_back(rest.substr(0,lpos )); // insert in list
358  if (lpos == -1 ) break;
359  rest = rest.substr(lpos,string::npos);// get the rest
360  }
361  ctxt->setFiles(files);
362  ctxt->setFileIterator(ctxt->files().begin());
363  return StatusCode::SUCCESS;
364  }
365  return error("Invalid iteration context.");
366 }
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
const Files & files() const
Access to the file container.
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
std::vector< std::string > Files
Definition of the file container.
ROOT specific event selector context.
void setFiles(const Files &f)
Set the file container.
StatusCode error(const std::string &msg) const
Helper method to issue error messages.
tuple item
print s1,s2
Definition: ana.py:146
void setFileIterator(Files::const_iterator i)
Set file iterator.
virtual StatusCode Gaudi::RootEvtSelector::resetCriteria ( const std::string &  cr,
Context &  c 
) const
virtual

Will set a new criteria for the selection of the next list of events and will change the state of the context in a way to point to the new list.

Parameters
crThe new criteria string.
cReference pointer to the Context object.
virtual StatusCode Gaudi::RootEvtSelector::rewind ( Context &  refCtxt) const
virtual

Rewind the dataset.

Parameters
refCtxt[IN/OUT] Reference to the context
Returns
StatusCode indicating success or failure
StatusCode RootEvtSelector::rewind ( Context &  refCtxt) const
virtual

Rewind the dataset.

Parameters
refCtxt[IN/OUT] Reference to the context
Returns
StatusCode indicating success or failure

Definition at line 252 of file RootEvtSelector.cpp.

252  {
253  RootEvtSelectorContext* pCtxt = dynamic_cast<RootEvtSelectorContext*>(&ctxt);
254  if ( pCtxt ) {
255  auto fileit = pCtxt->fileIterator();
256  if ( fileit != pCtxt->files().end() ) {
257  string input = *fileit;
258  m_dbMgr->disconnect(input).ignore();
259  }
260  pCtxt->setFID("");
261  pCtxt->setEntry(-1);
262  pCtxt->setBranch(nullptr);
263  pCtxt->setFileIterator(pCtxt->files().begin());
264  return StatusCode::SUCCESS;
265  }
266  return StatusCode::FAILURE;
267 }
const Files & files() const
Access to the file container.
Files::const_iterator fileIterator() const
Access to the file iterator.
virtual StatusCode disconnect(const std::string &dbName)
Disconnect from an existing data stream.
ROOT specific event selector context.
void setBranch(TBranch *b)
Set the top level branch (typically /Event) used to iterate.
void setEntry(long e)
Set current event entry number.
void setFID(const std::string &fid)
Set connection FID.
RootCnvSvc * m_dbMgr
Reference to the corresponding conversion service.
void setFileIterator(Files::const_iterator i)
Set file iterator.
void ignore() const
Definition: StatusCode.h:108

Member Data Documentation

std::string Gaudi::RootEvtSelector::m_cnvSvcName
protected

Property; Name of the concversion service used to create opaque addresses.

Definition at line 136 of file RootEvtSelector.h.

std::string Gaudi::RootEvtSelector::m_criteria
protected

Property: File criteria to define item iteration.

Definition at line 140 of file RootEvtSelector.h.

RootCnvSvc * Gaudi::RootEvtSelector::m_dbMgr
mutableprotected

Reference to the corresponding conversion service.

Definition at line 130 of file RootEvtSelector.h.

std::string Gaudi::RootEvtSelector::m_dummy
protected

Property: dummy to fake backwards compatibility.

Definition at line 142 of file RootEvtSelector.h.

std::string Gaudi::RootEvtSelector::m_persName
protected

Property; Name of the persistency service to search for conversion service.

Definition at line 134 of file RootEvtSelector.h.

CLID Gaudi::RootEvtSelector::m_rootCLID
protected

Class id of root node to create opaque address.

Definition at line 132 of file RootEvtSelector.h.

std::string Gaudi::RootEvtSelector::m_rootName
protected

Property: Name of the ROOT entry name.

Definition at line 138 of file RootEvtSelector.h.


The documentation for this class was generated from the following files: