| The Gaudi Framework v32r1 (f65d50dc)

Public Member Functions | Protected Attributes | Private Member Functions | List of all members
Gaudi::RootEvtSelector Class Reference

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

`#include <GAUDIROOT/RootEvtSelector.h>`

Inheritance diagram for Gaudi::RootEvtSelector:
[legend]
Collaboration diagram for Gaudi::RootEvtSelector:
[legend]

## Public Member Functions
StatusCode | initialize () override
| IService implementation: Db event selector override. More...
StatusCode | finalize () override
| IService implementation: Service finalization. More...
StatusCode | createContext (Context *&refpCtxt) const override
| Create a new event loop context. More...
StatusCode | last (Context &refContext) const override
| Access last item in the iteration. More...
StatusCode | next (Context &refCtxt) const override
| Get next iteration item from the event loop context. More...
StatusCode | next (Context &refCtxt, int jump) const override
| Get next iteration item from the event loop context, but skip jump elements. More...
StatusCode | previous (Context &refCtxt) const override
| Get previous iteration item from the event loop context. More...
StatusCode | previous (Context &refCtxt, int jump) const override
| Get previous iteration item from the event loop context, but skip jump elements. More...
StatusCode | rewind (Context &refCtxt) const override
| Rewind the dataset. More...
StatusCode | createAddress (const Context &refCtxt, IOpaqueAddress *&) const override
| Create new Opaque address corresponding to the current record. More...
StatusCode | releaseContext (Context *&refCtxt) const override
| Release existing event iteration context. More...
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 context in a way to point to the new list. More...
Public Member Functions inherited from extends< Service, IEvtSelector >
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...
Public Member Functions inherited from Service
const std::string & | name () const override
| Retrieve name of the service. More...
StatusCode | configure () override
StatusCode | initialize () override
StatusCode | start () override
StatusCode | stop () override
StatusCode | finalize () override
StatusCode | terminate () override
Gaudi::StateMachine::State | FSMState () const override
Gaudi::StateMachine::State | targetFSMState () const override
StatusCode | reinitialize () override
StatusCode | restart () override
StatusCode | sysInitialize () override
| Initialize Service. More...
StatusCode | sysStart () override
| Initialize Service. More...
StatusCode | sysStop () override
| Initialize Service. More...
StatusCode | sysFinalize () override
| Finalize Service. More...
StatusCode | sysReinitialize () override
| Re-initialize the Service. More...
StatusCode | sysRestart () override
| Re-initialize the Service. More...
| Service (std::string name, ISvcLocator *svcloc)
| Standard Constructor. More...
SmartIF< ISvcLocator > & | serviceLocator () const override
| Retrieve pointer to service locator. More...
StatusCode | setProperties ()
| Method for setting declared properties to the values specified for the job. More...
template<class T >
StatusCode | service (const std::string &name, const T *&psvc, bool createIf=true) const
| Access a service by name, creating it if it doesn't already exist. More...
template<class T >
StatusCode | service (const std::string &name, T *&psvc, bool createIf=true) const
template<typename IFace = IService>
SmartIF< IFace > | service (const std::string &name, bool createIf=true) const
template<class T >
StatusCode | service (const std::string &svcType, const std::string &svcName, T *&psvc) const
| Access a service by name and type, creating it if it doesn't already exist. More...
template<class T >
StatusCode | declareTool (ToolHandle< T > &handle, std::string toolTypeAndName, bool createIf=true)
| Declare used tool. More...
SmartIF< IAuditorSvc > & | auditorSvc () const
| The standard auditor service.May not be invoked before sysInitialize() has been invoked. More...
Public Member Functions inherited from PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
| PropertyHolder ()=default
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Details::PropertyBase &prop)
| Declare a property. More...
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, TYPE &value, const std::string &doc="none")
| Helper to wrap a regular data member and use it as a regular property. More...
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, Gaudi::Property< TYPE, VERIFIER, HANDLERS > &prop, const std::string &doc="none")
| Declare a PropertyBase instance setting name and documentation. More...
Gaudi::Details::PropertyBase * | declareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="")
| Declare a remote property. More...
StatusCode | setProperty (const Gaudi::Details::PropertyBase &p) override
| set the property form another property More...
StatusCode | setProperty (const std::string &s) override
| set the property from the formatted string More...
StatusCode | setProperty (const std::string &n, const std::string &v) override
| set the property from name and the value More...
StatusCode | setProperty (const std::string &name, const TYPE &value)
| set the property form the value More...
StatusCode | getProperty (Gaudi::Details::PropertyBase *p) const override
| get the property More...
const Gaudi::Details::PropertyBase & | getProperty (const std::string &name) const override
| get the property by name More...
StatusCode | getProperty (const std::string &n, std::string &v) const override
| convert the property to the string More...
const std::vector< Gaudi::Details::PropertyBase * > & | getProperties () const override
| get all properties More...
bool | hasProperty (const std::string &name) const override
| Return true if we have a property with the given name. More...
| PropertyHolder (const PropertyHolder &)=delete
PropertyHolder & | operator= (const PropertyHolder &)=delete
Public Member Functions inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
MSG::Level | msgLevel () const
| get the cached level (originally extracted from the embedded MsgStream) More...
bool | msgLevel (MSG::Level lvl) const
| get the output level from the embedded MsgStream More...
MSG::Level | outputLevel () const
| Backward compatibility function for getting the output level. More...
Public Member Functions inherited from CommonMessagingBase
virtual | ~CommonMessagingBase ()=default
| Virtual destructor. More...
const SmartIF< IMessageSvc > & | msgSvc () const
| The standard message service. More...
MsgStream & | msgStream () const
| Return an uninitialized MsgStream. More...
MsgStream & | msgStream (const MSG::Level level) const
| Predefined configurable message stream for the efficient printouts. More...
MsgStream & | always () const
| shortcut for the method msgStream(MSG::ALWAYS) More...
MsgStream & | fatal () const
| shortcut for the method msgStream(MSG::FATAL) More...
MsgStream & | err () const
| shortcut for the method msgStream(MSG::ERROR) More...
MsgStream & | error () const
| shortcut for the method msgStream(MSG::ERROR) More...
MsgStream & | warning () const
| shortcut for the method msgStream(MSG::WARNING) More...
MsgStream & | info () const
| shortcut for the method msgStream(MSG::INFO) More...
MsgStream & | debug () const
| shortcut for the method msgStream(MSG::DEBUG) More...
MsgStream & | verbose () const
| shortcut for the method msgStream(MSG::VERBOSE) More...
MsgStream & | msg () const
| shortcut for the method msgStream(MSG::INFO) More...

## Protected Attributes
RootCnvSvc * | m_dbMgr
| Reference to the corresponding conversion service. More...
CLID | m_rootCLID = CLID_NULL
| Class id of root node to create opaque address. More...
Gaudi::Property< std::string > | m_persName
Gaudi::Property< std::string > | m_dummy {this, "DbType", "", "dummy property to fake backwards compatibility"}
std::string | m_cnvSvcName = "Gaudi::RootCnvSvc/RootCnvSvc"
| 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...
Protected Attributes inherited from Service
Gaudi::StateMachine::State | m_state = Gaudi::StateMachine::OFFLINE
| Service state. More...
Gaudi::StateMachine::State | m_targetState = Gaudi::StateMachine::OFFLINE
| Service state. More...
Gaudi::Property< int > | m_outputLevel {this, "OutputLevel", MSG::NIL, "output level"}
Gaudi::Property< bool > | m_auditInit {this, "AuditServices", false, " unused"}
Gaudi::Property< bool > | m_auditorInitialize {this, "AuditInitialize", false, "trigger auditor on initialize()"}
Gaudi::Property< bool > | m_auditorStart {this, "AuditStart", false, "trigger auditor on start()"}
Gaudi::Property< bool > | m_auditorStop {this, "AuditStop", false, "trigger auditor on stop()"}
Gaudi::Property< bool > | m_auditorFinalize {this, "AuditFinalize", false, "trigger auditor on finalize()"}
Gaudi::Property< bool > | m_auditorReinitialize {this, "AuditReinitialize", false, "trigger auditor on reinitialize()"}
Gaudi::Property< bool > | m_auditorRestart {this, "AuditRestart", false, "trigger auditor on restart()"}
SmartIF< IAuditorSvc > | m_pAuditorSvc
| Auditor Service. More...

## Private Member Functions
StatusCode | error (const std::string &msg) const
| Helper method to issue error messages. More...

## Additional Inherited Members
Public Types inherited from extends< Service, IEvtSelector >
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 Service
using | Factory = Gaudi::PluginService::Factory< IService *(const std::string &, ISvcLocator *)>
Public Types inherited from PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
using | PropertyHolderImpl = PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
| Typedef used to refer to this class from derived classes, as in. More...
Public Types inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
using | base_class = CommonMessaging
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...
Protected Member Functions inherited from Service
| ~Service () override
| Standard Destructor. More...
int | outputLevel () const
| get the `Service's` output level More...
Protected Member Functions inherited from PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
Gaudi::Details::PropertyBase * | property (const std::string &name) const
Protected Member Functions inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
MSG::Level | setUpMessaging () const
| Set up local caches. More...
MSG::Level | resetMessaging ()
| Reinitialize internal states. More...
void | updateMsgStreamOutputLevel (int level)
| Update the output level of the cached MsgStream. 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.

## Member Function Documentation

## ◆ createAddress()

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

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 248 of file RootEvtSelector.cpp.

248 {
249 const RootEvtSelectorContext* pctxt = dynamic_cast<const RootEvtSelectorContext*>( &ctxt );
250 if ( pctxt ) {
251 long ent = pctxt->entry();
252 if ( ent >= 0 ) {
253 auto fileit = pctxt->fileIterator();
254 if ( fileit != pctxt->files().end() ) {
255 const string par[2] = {pctxt->fid(), m_rootName};
256 const unsigned long ipar[2] = {0, (unsigned long)ent};
257 return m_dbMgr->createAddress( m_dbMgr->repSvcType(), m_rootCLID, &par[0], &ipar[0], pAddr );
258 }
259 }
260 }
261 pAddr = nullptr;
262 return StatusCode::FAILURE;
263 }
Gaudi::RootCnvSvc::createAddress
StatusCode createAddress(long svc_type, const CLID &clid, const std::string *par, const unsigned long *ip, IOpaqueAddress *&refpAddress) override
IAddressCreator implementation: Address creation.
Definition: RootCnvSvc.cpp:347
ConversionSvc::repSvcType
long repSvcType() const override
Retrieve the class type of the data store the converter uses.
Definition: ConversionSvc.cpp:275
std::vector::end
T end(T... args)
Gaudi::RootEvtSelector::m_dbMgr
RootCnvSvc * m_dbMgr
Reference to the corresponding conversion service.
Definition: RootEvtSelector.h:128
Gaudi::RootEvtSelectorContext::fileIterator
Files::const_iterator fileIterator() const
Access to the file iterator.
Definition: RootEvtSelector.cpp:64
compareOutputFiles.par
string par
Definition: compareOutputFiles.py:465
Gaudi::RootEvtSelectorContext
ROOT specific event selector context.
Definition: RootEvtSelector.cpp:32
Gaudi::RootEvtSelectorContext::entry
long entry() const
Access to the current event entry number.
Definition: RootEvtSelector.cpp:68
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86
Gaudi::RootEvtSelector::m_rootCLID
CLID m_rootCLID
Class id of root node to create opaque address.
Definition: RootEvtSelector.h:130
Gaudi::RootEvtSelectorContext::fid
const std::string & fid() const
Access connection fid.
Definition: RootEvtSelector.cpp:74
Gaudi::RootEvtSelector::m_rootName
std::string m_rootName
Property: Name of the ROOT entry name.
Definition: RootEvtSelector.h:139
Gaudi::RootEvtSelectorContext::files
const Files & files() const
Access to the file container.
Definition: RootEvtSelector.cpp:55

## ◆ createContext()

StatusCode RootEvtSelector::createContext | ( | Context *& | refpCtxt | ) | const
| override

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 148 of file RootEvtSelector.cpp.

148 {
149 refpCtxt = new RootEvtSelectorContext( this );
150 return StatusCode::SUCCESS;
151 }
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
Gaudi::RootEvtSelectorContext
ROOT specific event selector context.
Definition: RootEvtSelector.cpp:32

## ◆ error()

StatusCode RootEvtSelector::error | ( | const std::string & | msg | ) | const
| private

Helper method to issue error messages.

Definition at line 99 of file RootEvtSelector.cpp.

99 {
100 MsgStream log( msgSvc(), name() );
101 log << MSG::ERROR << msg << endmsg;
102 return StatusCode::FAILURE;
103 }
MsgStream
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
CommonMessagingBase::msgSvc
const SmartIF< IMessageSvc > & msgSvc() const
The standard message service.
Definition: CommonMessaging.h:68
Service::name
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:274
CommonMessagingBase::msg
MsgStream & msg() const
shortcut for the method msgStream(MSG::INFO)
Definition: CommonMessaging.h:113
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86
MSG::ERROR
Definition: IMessageSvc.h:15
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192
Gaudi.Configuration.log
log
Definition: Configuration.py:13

## ◆ finalize()

StatusCode RootEvtSelector::finalize | ( |  | ) |
| override

IService implementation: Service finalization.

Definition at line 140 of file RootEvtSelector.cpp.

140 {
141 // Initialize base class
142 if ( m_dbMgr ) m_dbMgr->release();
143 m_dbMgr = nullptr; // release
144 return Service::finalize();
145 }
Service::finalize
StatusCode finalize() override
Definition: Service.cpp:164
Gaudi::RootEvtSelector::m_dbMgr
RootCnvSvc * m_dbMgr
Reference to the corresponding conversion service.
Definition: RootEvtSelector.h:128

## ◆ initialize()

StatusCode RootEvtSelector::initialize | ( |  | ) |
| override

IService implementation: Db event selector override.

Definition at line 106 of file RootEvtSelector.cpp.

106 {
107 // Initialize base class
108 StatusCode status = Service::initialize();
109 if ( !status.isSuccess() ) { return error( "Error initializing base class Service!" ); }
110
111 auto ipers = serviceLocator()->service<IPersistencySvc>( m_persName );
112 if ( !ipers ) { return error( "Unable to locate IPersistencySvc interface of " + m_persName ); }
113 IConversionSvc* cnvSvc = nullptr;
114 Gaudi::Utils::TypeNameString itm( m_cnvSvcName );
115 status = ipers->getService( itm.name(), cnvSvc );
116 if ( !status.isSuccess() ) {
117 status = ipers->getService( itm.type(), cnvSvc );
118 if ( !status.isSuccess() ) {
119 return error( "Unable to locate IConversionSvc interface of database type " + m_cnvSvcName );
120 }
121 }
122 m_dbMgr = dynamic_cast<RootCnvSvc*>( cnvSvc );
123 if ( !m_dbMgr ) {
124 cnvSvc->release();
125 return error( "Unable to localize service:" + m_cnvSvcName );
126 }
127 m_dbMgr->addRef();
128
129 // Get DataSvc
130 auto eds = serviceLocator()->service<IDataManagerSvc>( "EventDataSvc" );
131 if ( !eds ) { return error( "Unable to localize service EventDataSvc" ); }
132 m_rootCLID = eds->rootCLID();
133 m_rootName = eds->rootName();
134 MsgStream log( msgSvc(), name() );
135 log << MSG::DEBUG << "Selection root:" << m_rootName << " CLID:" << m_rootCLID << endmsg;
136 return status;
137 }
MsgStream
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
Service::initialize
StatusCode initialize() override
Definition: Service.cpp:60
Service::serviceLocator
SmartIF< ISvcLocator > & serviceLocator() const override
Retrieve pointer to service locator.
Definition: Service.cpp:277
CommonMessagingBase::msgSvc
const SmartIF< IMessageSvc > & msgSvc() const
The standard message service.
Definition: CommonMessaging.h:68
IConversionSvc
Definition: IConversionSvc.h:37
IDataManagerSvc
Definition: IDataManagerSvc.h:45
MSG::DEBUG
Definition: IMessageSvc.h:15
Gaudi::RootEvtSelector::m_persName
Gaudi::Property< std::string > m_persName
Definition: RootEvtSelector.h:132
Gaudi::RootEvtSelector::m_dbMgr
RootCnvSvc * m_dbMgr
Reference to the corresponding conversion service.
Definition: RootEvtSelector.h:128
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:76
Service::name
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:274
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:98
Gaudi::Utils::TypeNameString
Helper class to parse a string of format "type/name".
Definition: TypeNameString.h:10
Gaudi::RootEvtSelector::m_cnvSvcName
std::string m_cnvSvcName
Property; Name of the concversion service used to create opaque addresses.
Definition: RootEvtSelector.h:137
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
StatusCode::isSuccess
bool isSuccess() const
Definition: StatusCode.h:267
IInterface::release
virtual unsigned long release()=0
Release Interface instance.
IPersistencySvc
Data persistency service interface.
Definition: IPersistencySvc.h:19
Gaudi::RootEvtSelector::m_rootCLID
CLID m_rootCLID
Class id of root node to create opaque address.
Definition: RootEvtSelector.h:130
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192
Gaudi::RootEvtSelector::m_rootName
std::string m_rootName
Property: Name of the ROOT entry name.
Definition: RootEvtSelector.h:139
Gaudi.Configuration.log
log
Definition: Configuration.py:13

## ◆ last()

StatusCode RootEvtSelector::last | ( | Context & | refContext | ) | const
| override

Access last item in the iteration.

Parameters

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

Definition at line 154 of file RootEvtSelector.cpp.

154 { return StatusCode::FAILURE; }
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86

## ◆ next() [1/2]

StatusCode RootEvtSelector::next | ( | Context & | refCtxt | ) | const
| override

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 157 of file RootEvtSelector.cpp.

157 {
158 RootEvtSelectorContext* pCtxt = dynamic_cast<RootEvtSelectorContext*>( &ctxt );
159 if ( pCtxt ) {
160 TBranch* b = pCtxt->branch();
161 if ( !b ) {
162 auto fileit = pCtxt->fileIterator();
163 pCtxt->setBranch( nullptr );
164 pCtxt->setEntry( -1 );
165 if ( fileit != pCtxt->files().end() ) {
166 RootDataConnection* con = nullptr;
167 string in = *fileit;
168 StatusCode sc = m_dbMgr->connectDatabase( in, IDataConnection::READ, &con );
169 if ( sc.isSuccess() ) {
170 string section = m_rootName[0] == '/' ? m_rootName.substr( 1 ) : m_rootName;
171 b = con->getBranch( section, m_rootName );
172 if ( b ) {
173 pCtxt->setFID( con->fid() );
174 pCtxt->setBranch( b );
175 return next( ctxt );
176 }
177 }
178 m_dbMgr->disconnect( in ).ignore();
179 pCtxt->setFileIterator( ++fileit );
180 return next( ctxt );
181 }
182 return StatusCode::FAILURE;
183 }
184 long ent = pCtxt->entry();
185 Long64_t nent = b->GetEntries();
186 if ( nent > ( ent + 1 ) ) {
187 pCtxt->setEntry( ++ent );
188 return StatusCode::SUCCESS;
189 }
190 auto fit = pCtxt->fileIterator();
191 pCtxt->setFileIterator( ++fit );
192 pCtxt->setEntry( -1 );
193 pCtxt->setBranch( nullptr );
194 pCtxt->setFID( "" );
195 return next( ctxt );
196 }
197 return StatusCode::FAILURE;
198 }
Gaudi::RootEvtSelector::next
StatusCode next(Context &refCtxt) const override
Get next iteration item from the event loop context.
Definition: RootEvtSelector.cpp:157
Gaudi::RootDataConnection::getBranch
TBranch * getBranch(std::string_view section, std::string_view branch_name)
Access data branch by name: Get existing branch in read only mode.
Definition: RootDataConnection.h:303
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
Gaudi::IDataConnection::fid
const std::string & fid() const
Access file id.
Definition: IIODataManager.h:53
std::vector::end
T end(T... args)
Gaudi::RootCnvSvc::connectDatabase
StatusCode connectDatabase(const std::string &dataset, int mode, RootDataConnection **con)
Connect the output file to the service with open mode.
Definition: RootCnvSvc.cpp:194
Gaudi::RootEvtSelector::m_dbMgr
RootCnvSvc * m_dbMgr
Reference to the corresponding conversion service.
Definition: RootEvtSelector.h:128
Gaudi::RootEvtSelectorContext::fileIterator
Files::const_iterator fileIterator() const
Access to the file iterator.
Definition: RootEvtSelector.cpp:64
Gaudi::IDataConnection::READ
Definition: IIODataManager.h:39
Gaudi::RootEvtSelectorContext
ROOT specific event selector context.
Definition: RootEvtSelector.cpp:32
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
StatusCode::isSuccess
bool isSuccess() const
Definition: StatusCode.h:267
Gaudi::RootCnvSvc::disconnect
virtual StatusCode disconnect(const std::string &dbName)
Disconnect from an existing data stream.
Definition: RootCnvSvc.cpp:341
Gaudi::RootEvtSelectorContext::setBranch
void setBranch(TBranch *b)
Set the top level branch (typically /Event) used to iterate.
Definition: RootEvtSelector.cpp:78
StatusCode::ignore
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:153
Gaudi::RootEvtSelectorContext::setEntry
void setEntry(long e)
Set current event entry number.
Definition: RootEvtSelector.cpp:70
Gaudi::RootEvtSelectorContext::entry
long entry() const
Access to the current event entry number.
Definition: RootEvtSelector.cpp:68
Gaudi::RootEvtSelectorContext::setFID
void setFID(const std::string &fid)
Set connection FID.
Definition: RootEvtSelector.cpp:72
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86
std::string::substr
T substr(T... args)
Gaudi::RootEvtSelectorContext::setFileIterator
void setFileIterator(Files::const_iterator i)
Set file iterator.
Definition: RootEvtSelector.cpp:66
Gaudi::RootDataConnection
Concrete implementation of the IDataConnection interface to access ROOT files.
Definition: RootDataConnection.h:93
Gaudi::RootEvtSelectorContext::branch
TBranch * branch() const
Access to the top level branch (typically /Event) used to iterate.
Definition: RootEvtSelector.cpp:76
Gaudi::RootEvtSelector::m_rootName
std::string m_rootName
Property: Name of the ROOT entry name.
Definition: RootEvtSelector.h:139
Gaudi::RootEvtSelectorContext::files
const Files & files() const
Access to the file container.
Definition: RootEvtSelector.cpp:55

## ◆ next() [2/2]

StatusCode RootEvtSelector::next | ( | Context & | refCtxt,
|  | int | jump
| ) |  | const
| override

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 201 of file RootEvtSelector.cpp.

201 {
202 if ( jump > 0 ) {
203 for ( int i = 0; i < jump; ++i ) {
204 StatusCode status = next( ctxt );
205 if ( !status.isSuccess() ) { return status; }
206 }
207 return StatusCode::SUCCESS;
208 }
209 return StatusCode::FAILURE;
210 }
Gaudi::RootEvtSelector::next
StatusCode next(Context &refCtxt) const override
Get next iteration item from the event loop context.
Definition: RootEvtSelector.cpp:157
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
StatusCode::isSuccess
bool isSuccess() const
Definition: StatusCode.h:267
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86

## ◆ previous() [1/2]

StatusCode RootEvtSelector::previous | ( | Context & | refCtxt | ) | const
| override

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 213 of file RootEvtSelector.cpp.

213 {
214 return error( "EventSelector Iterator, operator -- not supported " );
215 }
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:98

## ◆ previous() [2/2]

StatusCode RootEvtSelector::previous | ( | Context & | refCtxt,
|  | int | jump
| ) |  | const
| override

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 218 of file RootEvtSelector.cpp.

218 {
219 if ( jump > 0 ) {
220 for ( int i = 0; i < jump; ++i ) {
221 StatusCode status = previous( ctxt );
222 if ( !status.isSuccess() ) { return status; }
223 }
224 return StatusCode::SUCCESS;
225 }
226 return StatusCode::FAILURE;
227 }
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
Gaudi::RootEvtSelector::previous
StatusCode previous(Context &refCtxt) const override
Get previous iteration item from the event loop context.
Definition: RootEvtSelector.cpp:213
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
StatusCode::isSuccess
bool isSuccess() const
Definition: StatusCode.h:267
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86

## ◆ releaseContext()

StatusCode RootEvtSelector::releaseContext | ( | Context *& | refCtxt | ) | const
| override

Release existing event iteration context.

Parameters

  refCtxt | [IN/OUT] Reference to the context

Returns
  StatusCode indicating success or failure

Definition at line 266 of file RootEvtSelector.cpp.

266 {
267 RootEvtSelectorContext* pCtxt = dynamic_cast<RootEvtSelectorContext*>( ctxt );
268 if ( pCtxt ) {
269 delete pCtxt;
270 return StatusCode::SUCCESS;
271 }
272 return StatusCode::FAILURE;
273 }
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
Gaudi::RootEvtSelectorContext
ROOT specific event selector context.
Definition: RootEvtSelector.cpp:32
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86

## ◆ resetCriteria()

StatusCode RootEvtSelector::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 context in a way to point to the new list.

Parameters

  cr | The new criteria string.
  c | Reference pointer to the Context object.

Definition at line 277 of file RootEvtSelector.cpp.

277 {
278 MsgStream log( msgSvc(), name() );
279 RootEvtSelectorContext* ctxt = dynamic_cast<RootEvtSelectorContext*>( &context );
280 string db, typ, item, sel, stmt, aut, addr;
281 if ( ctxt ) {
282 if ( criteria.compare( 0, 5, "FILE " ) == 0 ) {
283 // The format for the criteria is:
284 // FILE filename1, filename2 ...
285 db = criteria.substr( 5 );
286 } else {
287 using Parser = Gaudi::Utils::AttribStringParser;
288 for ( auto attrib : Parser( criteria ) ) {
289 string tmp = attrib.tag.substr( 0, 3 );
290 if ( tmp == "DAT" ) {
291 db = std::move( attrib.value );
292 } else if ( tmp == "OPT" ) {
293 if ( attrib.value.compare( 0, 3, "REA" ) != 0 ) {
294 log << MSG::ERROR << "Option:\"" << attrib.value << "\" not valid" << endmsg;
295 return StatusCode::FAILURE;
296 }
297 } else if ( tmp == "TYP" ) {
298 typ = std::move( attrib.value );
299 } else if ( tmp == "ADD" ) {
300 item = std::move( attrib.value );
301 } else if ( tmp == "SEL" ) {
302 sel = std::move( attrib.value );
303 } else if ( tmp == "FUN" ) {
304 stmt = std::move( attrib.value );
305 } else if ( tmp == "AUT" ) {
306 aut = std::move( attrib.value );
307 } else if ( tmp == "COL" ) {
308 addr = std::move( attrib.value );
309 }
310 }
311 }
312 // It's now time to parse the criteria for the event selection
313 // The format for the criteria is:
314 // FILE filename1, filename2 ...
315 // JOBID number1-number2, number3, ...
316 RootEvtSelectorContext::Files files;
317 string rest = db;
318 files.clear();
319 while ( true ) {
320 int ipos = rest.find_first_not_of( " ," );
321 if ( ipos == -1 ) break;
322 rest = rest.substr( ipos, string::npos ); // remove blanks before
323 int lpos = rest.find_first_of( " ," ); // locate next blank
324 files.push_back( rest.substr( 0, lpos ) ); // insert in list
325 if ( lpos == -1 ) break;
326 rest = rest.substr( lpos, string::npos ); // get the rest
327 }
328 ctxt->setFiles( files );
329 ctxt->setFileIterator( ctxt->files().begin() );
330 return StatusCode::SUCCESS;
331 }
332 return error( "Invalid iteration context." );
333 }
Gaudi::Utils::AttribStringParser
Parse attribute strings allowing iteration over the various attributes.
Definition: AttribStringParser.h:30
MsgStream
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
CommonMessagingBase::msgSvc
const SmartIF< IMessageSvc > & msgSvc() const
The standard message service.
Definition: CommonMessaging.h:68
std::string::find_first_not_of
T find_first_not_of(T... args)
IOTest.sel
sel
Definition: IOTest.py:93
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
Service::name
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:274
std::vector::push_back
T push_back(T... args)
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:98
Gaudi::RootEvtSelectorContext
ROOT specific event selector context.
Definition: RootEvtSelector.cpp:32
std::string::find_first_of
T find_first_of(T... args)
std::vector::clear
T clear(T... args)
std::move
T move(T... args)
Gaudi::RootEvtSelectorContext::setFiles
void setFiles(const Files &f)
Set the file container.
Definition: RootEvtSelector.cpp:57
std::vector< std::string >
std::vector::begin
T begin(T... args)
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86
MSG::ERROR
Definition: IMessageSvc.h:15
std::string::substr
T substr(T... args)
Gaudi::RootEvtSelectorContext::setFileIterator
void setFileIterator(Files::const_iterator i)
Set file iterator.
Definition: RootEvtSelector.cpp:66
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192
Gaudi.Configuration.log
log
Definition: Configuration.py:13
Gaudi::RootEvtSelectorContext::files
const Files & files() const
Access to the file container.
Definition: RootEvtSelector.cpp:55

## ◆ rewind()

StatusCode RootEvtSelector::rewind | ( | Context & | refCtxt | ) | const
| override

Rewind the dataset.

Parameters

  refCtxt | [IN/OUT] Reference to the context

Returns
  StatusCode indicating success or failure

Definition at line 230 of file RootEvtSelector.cpp.

230 {
231 RootEvtSelectorContext* pCtxt = dynamic_cast<RootEvtSelectorContext*>( &ctxt );
232 if ( pCtxt ) {
233 auto fileit = pCtxt->fileIterator();
234 if ( fileit != pCtxt->files().end() ) {
235 string input = *fileit;
236 m_dbMgr->disconnect( input ).ignore();
237 }
238 pCtxt->setFID( "" );
239 pCtxt->setEntry( -1 );
240 pCtxt->setBranch( nullptr );
241 pCtxt->setFileIterator( pCtxt->files().begin() );
242 return StatusCode::SUCCESS;
243 }
244 return StatusCode::FAILURE;
245 }
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
std::vector::end
T end(T... args)
Gaudi::RootEvtSelector::m_dbMgr
RootCnvSvc * m_dbMgr
Reference to the corresponding conversion service.
Definition: RootEvtSelector.h:128
Gaudi::RootEvtSelectorContext::fileIterator
Files::const_iterator fileIterator() const
Access to the file iterator.
Definition: RootEvtSelector.cpp:64
Gaudi::RootEvtSelectorContext
ROOT specific event selector context.
Definition: RootEvtSelector.cpp:32
Gaudi::RootCnvSvc::disconnect
virtual StatusCode disconnect(const std::string &dbName)
Disconnect from an existing data stream.
Definition: RootCnvSvc.cpp:341
Gaudi::RootEvtSelectorContext::setBranch
void setBranch(TBranch *b)
Set the top level branch (typically /Event) used to iterate.
Definition: RootEvtSelector.cpp:78
StatusCode::ignore
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:153
Gaudi::RootEvtSelectorContext::setEntry
void setEntry(long e)
Set current event entry number.
Definition: RootEvtSelector.cpp:70
std::vector::begin
T begin(T... args)
Gaudi::RootEvtSelectorContext::setFID
void setFID(const std::string &fid)
Set connection FID.
Definition: RootEvtSelector.cpp:72
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86
Gaudi::RootEvtSelectorContext::setFileIterator
void setFileIterator(Files::const_iterator i)
Set file iterator.
Definition: RootEvtSelector.cpp:66
Gaudi::RootEvtSelectorContext::files
const Files & files() const
Access to the file container.
Definition: RootEvtSelector.cpp:55

## Member Data Documentation

## ◆ m_cnvSvcName

std::string Gaudi::RootEvtSelector::m_cnvSvcName = "Gaudi::RootCnvSvc/RootCnvSvc"
| protected

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

Definition at line 137 of file RootEvtSelector.h.

## ◆ m_criteria

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

Property: File criteria to define item iteration.

Definition at line 141 of file RootEvtSelector.h.

## ◆ m_dbMgr

RootCnvSvc* Gaudi::RootEvtSelector::m_dbMgr
| mutable protected

Reference to the corresponding conversion service.

Definition at line 128 of file RootEvtSelector.h.

## ◆ m_dummy

Gaudi::Property<std::string> Gaudi::RootEvtSelector::m_dummy {this, "DbType", "", "dummy property to fake backwards compatibility"}
| protected

Definition at line 134 of file RootEvtSelector.h.

## ◆ m_persName

Gaudi::Property<std::string> Gaudi::RootEvtSelector::m_persName
| protected

Initial value:
{this, "EvtPersistencySvc", "EventPersistencySvc",
"Name of the persistency service to search for conversion service"}

Definition at line 132 of file RootEvtSelector.h.

## ◆ m_rootCLID

CLID Gaudi::RootEvtSelector::m_rootCLID = CLID_NULL
| protected

Class id of root node to create opaque address.

Definition at line 130 of file RootEvtSelector.h.

## ◆ m_rootName

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

Property: Name of the ROOT entry name.

Definition at line 139 of file RootEvtSelector.h.

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

- RootCnv/RootCnv/RootEvtSelector.h
- RootCnv/src/RootEvtSelector.cpp