9 #ifndef GAUDIROOTCNV_ROOTEVTSELECTORCONTEXT_H    10 #define GAUDIROOTCNV_ROOTEVTSELECTORCONTEXT_H    64       m_fiter = m_files.
begin();
    86 #endif // GAUDIROOTCNV_ROOTEVTSELECTORCONTEXT_H   100 using namespace Gaudi;
   117     return error( 
"Error initializing base class Service!" );
   122     return error( 
"Unable to locate IPersistencySvc interface of " + m_persName );
   126   status = ipers->getService( itm.
name(), cnvSvc );
   128     status = ipers->getService( itm.
type(), cnvSvc );
   130       return error( 
"Unable to locate IConversionSvc interface of database type " + m_cnvSvcName );
   133   m_dbMgr = 
dynamic_cast<RootCnvSvc*
>( cnvSvc );
   136     return error( 
"Unable to localize service:" + m_cnvSvcName );
   141   auto eds = serviceLocator()->service<
IDataManagerSvc>( 
"EventDataSvc" );
   143     return error( 
"Unable to localize service EventDataSvc" );
   145   m_rootCLID = eds->rootCLID();
   146   m_rootName = eds->rootName();
   148   log << 
MSG::DEBUG << 
"Selection root:" << m_rootName << 
" CLID:" << m_rootCLID << 
endmsg;
   156   if ( m_dbMgr ) m_dbMgr->release();
   176     TBranch* b = pCtxt->
branch();
   181       if ( fileit != pCtxt->
files().
end() ) {
   186           string section = m_rootName[0] == 
'/' ? m_rootName.substr( 1 ) : m_rootName;
   187           b              = con->
getBranch( section, m_rootName );
   194         m_dbMgr->disconnect( in ).ignore();
   200     long     ent  = pCtxt->
entry();
   201     Long64_t nent = b->GetEntries();
   202     if ( nent > ( ent + 1 ) ) {
   220     for ( 
int i = 0; i < jump; ++i ) {
   234   return error( 
"EventSelector Iterator, operator -- not supported " );
   241     for ( 
int i = 0; i < jump; ++i ) {
   258     if ( fileit != pCtxt->
files().
end() ) {
   259       string input = *fileit;
   260       m_dbMgr->disconnect( input ).ignore();
   276     long ent = pctxt->
entry();
   279       if ( fileit != pctxt->
files().
end() ) {
   280         const string        par[2]  = {pctxt->
fid(), m_rootName};
   281         const unsigned long ipar[2] = {0, (
unsigned long)ent};
   282         return m_dbMgr->createAddress( m_dbMgr->repSvcType(), m_rootCLID, &par[0], &ipar[0], pAddr );
   307   string                  db, typ, item, 
sel, stmt, aut, addr;
   309     if ( criteria.
compare( 0, 5, 
"FILE " ) == 0 ) {
   312       db = criteria.
substr( 5 );
   315       for ( 
auto attrib : Parser( criteria ) ) {
   316         string tmp = attrib.tag.substr( 0, 3 );
   317         if ( tmp == 
"DAT" ) {
   319         } 
else if ( tmp == 
"OPT" ) {
   320           if ( attrib.value.compare( 0, 3, 
"REA" ) != 0 ) {
   321             log << 
MSG::ERROR << 
"Option:\"" << attrib.value << 
"\" not valid" << 
endmsg;
   324         } 
else if ( tmp == 
"TYP" ) {
   326         } 
else if ( tmp == 
"ADD" ) {
   328         } 
else if ( tmp == 
"SEL" ) {
   330         } 
else if ( tmp == 
"FUN" ) {
   332         } 
else if ( tmp == 
"AUT" ) {
   334         } 
else if ( tmp == 
"COL" ) {
   348       if ( ipos == -1 ) 
break;
   349       rest     = rest.
substr( ipos, string::npos ); 
   352       if ( lpos == -1 ) 
break;
   353       rest = rest.
substr( lpos, string::npos ); 
   359   return error( 
"Invalid iteration context." );
 Parse attribute strings allowing iteration over the various attributes. 
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 of the MsgStream class used to transmit messages. 
StatusCode initialize() override
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. 
RootEvtSelectorContext(const RootEvtSelector *s)
Standard constructor with initialization. 
T find_first_not_of(T...args)
StatusCode finalize() override
std::vector< std::string > Files
Definition of the file container. 
bool isSuccess() const 
Test for a status code of SUCCESS. 
std::string m_fid
Connection fid. 
StatusCode last(Context &refContext) const  override
Access last item in the iteration. 
StatusCode releaseContext(Context *&refCtxt) const  override
Release existing event iteration context. 
~RootEvtSelectorContext() override=default
Standard destructor. 
MsgStream & error() const 
shortcut for the method msgStream(MSG::ERROR) 
Helper class to parse a string of format "type/name". 
StatusCode rewind(Context &refCtxt) const  override
Rewind the dataset. 
ROOT specific event selector context. 
This class is used for returning status codes from appropriate routines. 
StatusCode finalize() override
IService implementation: Service finalization. 
TBranch * getBranch(const std::string §ion, const std::string &branch_name)
Access data branch by name: Get existing branch in read only mode. 
T find_first_of(T...args)
void * identifier() const  override
Context identifier. 
const RootEvtSelector * m_sel
Reference to the hosting event selector instance. 
void setFiles(const Files &f)
Set the file container. 
void setBranch(TBranch *b)
Set the top level branch (typically /Event) used to iterate. 
StatusCode next(Context &refCtxt) const  override
Get next iteration item from the event loop context. 
Concrete event selector implementation to access ROOT files. 
void setEntry(long e)
Set current event entry number. 
virtual unsigned long release()=0
Release Interface instance. 
StatusCode createAddress(const Context &refCtxt, IOpaqueAddress *&) const  override
Create new Opaque address corresponding to the current record. 
const std::string & type() const 
const std::string & fid() const 
Access connection fid. 
void setFID(const std::string &fid)
Set connection FID. 
Files::const_iterator m_fiter
The iterator to the. 
Data persistency service interface. 
void setFileIterator(Files::const_iterator i)
Set file iterator. 
TBranch * branch() const 
Access to the top level branch (typically /Event) used to iterate. 
StatusCode createContext(Context *&refpCtxt) const  override
Create a new event loop context. 
const std::string & name() const 
Opaque address interface definition. 
StatusCode initialize() override
IService implementation: Db event selector override. 
Files m_files
The file container managed by this context. 
Concrete implementation of the IDataConnection interface to access ROOT files. 
TBranch * m_branch
Reference to the top level branch (typically /Event) used to iterate. 
StatusCode previous(Context &refCtxt) const  override
Get previous iteration item from the event loop context. 
Helper functions to set/get the application return code. 
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream. 
long entry() const 
Access to the current event entry number. 
long m_entry
Current entry of current file.