26 #define ON_DEBUG if ( msgLevel( MSG::DEBUG ) ) 31 return algState.
state() == AlgExecState::State::Done && algState.filterPassed();
43 fatal() <<
"Unable to locate IDataManagerSvc interface" <<
endmsg;
61 fatal() <<
"Unable to connect to conversion service." <<
endmsg;
92 for (
const auto& i : a.second )
addItem( items, i );
165 for (
auto& j : *sel ) {
175 const std::string loc = ( j->registry() ? j->registry()->identifier() :
"UnRegistered" );
182 for (
auto& j : *sel ) {
188 const std::string loc = ( j->registry() ? j->registry()->identifier() :
"UnRegistered" );
209 if ( level < m_currentItem->depth() ) {
257 auto alg = iAlgItems.first;
258 const Items& items = iAlgItems.second;
259 if ( passed( alg ) ) {
261 debug() <<
"Algorithm '" << alg->name() <<
"' fired. Adding " << items <<
endmsg;
262 for (
const auto& i : items ) {
284 if ( !unique.
count( o ) ) {
290 m_objects.swap( tmp );
301 for (
auto& i : itms )
delete i;
319 auto sep = descriptor.
rfind(
"#" );
321 if ( sep != std::string::npos ) {
323 level = ( slevel ==
"*" ) ? 9999999 :
std::stoi( slevel );
326 size_t idx = obj_path.
find(
"/", 1 );
327 while ( idx != std::string::npos ) {
330 idx = obj_path.
find(
"/", idx + 1 );
334 const auto& item = itms.
back();
336 debug() <<
"Adding OutputStream item " << item->path() <<
" with " << item->depth() <<
" level(s)." <<
endmsg;
347 switch ( ::
toupper( tag[0] ) ) {
355 switch ( ::
toupper( tag[1] ) ) {
365 switch ( ::
toupper( val[0] ) ) {
367 if ( ::strncasecmp( val.
c_str(),
"RECREATE", 3 ) == 0 )
369 else if ( ::strncasecmp( val.
c_str(),
"READ", 3 ) == 0 )
402 status = ipers->getService( typ, cnvSvc );
404 fatal() <<
"Unable to locate IConversionSvc interface of database type " << typ <<
endmsg;
410 fatal() <<
"Unable to locate IConversionSvc interface (Unknown technology) " <<
endmsg 411 <<
"You either have to specify a technology name or a service name!" <<
endmsg 412 <<
"Please correct the job option \"" <<
name() <<
".Output\" !" <<
endmsg;
434 fatal() <<
"Can't locate ApplicationMgr!!!" <<
endmsg;
437 if ( !theAlgorithm ) {
warning() <<
"Failed to decode Algorithm name " << theName <<
endmsg; }
448 for (
const auto& it : theNames.value() ) {
451 if ( theAlgorithm ) {
454 theAlgorithm->addRef();
458 info() << it <<
" doesn't exist - ignored" <<
endmsg;
Gaudi::Property< std::vector< std::string > > m_acceptNames
Parse attribute strings allowing iteration over the various attributes.
bool isEventAccepted() const
Test whether this event should be output.
void clearItems(Items &itms)
Clear item list.
virtual bool hasInput() const
Tell if the instance has been configured with input items or not.
Gaudi::Property< std::vector< std::string > > m_vetoNames
IDataSelector m_objects
Collection of objects being selected.
StatusCode finalize() override
Terminate OutputStream.
int m_events
Number of events written to this output stream.
Implementation of property with value of concrete type.
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
virtual StatusCode addPreLoadItem(const DataStoreItem &item)=0
Add an item to the preload list.
std::string m_outputType
Output type: NEW(NEW,CREATE,WRITE,RECREATE), UPDATE)
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Gaudi::Property< bool > m_verifyItems
const std::string & name() const override
The identifying name of the algorithm object.
std::vector< Gaudi::Algorithm * > m_requireAlgs
Vector of Algorithms that this stream requires.
DataStoreItem * m_currentItem
Keep track of the current item.
Gaudi::Property< std::string > m_output
Gaudi::Property< std::string > m_outputName
The IAlgManager is the interface implemented by the Algorithm Factory in the Application Manager to s...
constexpr static const auto SUCCESS
Gaudi::Property< ItemNames > m_optItemNames
virtual StatusCode createRep(DataObject *pObject, IOpaqueAddress *&refpAddress)=0
Convert the transient object to the requested representation.
IDataSelector * selectedObjects()
Return the list of selected objects.
SmartIF< IDataProviderSvc > m_pDataProvider
Keep reference to the data provider service.
Description of the DataStoreItem class.
Gaudi::Property< bool > m_doPreLoad
virtual StatusCode traverseSubTree(boost::string_ref sub_tree_path, IDataStoreAgent *pAgent)=0
Analyse by traversing all data objects below the sub tree identified by its full path name...
const std::string & path() const
Accessor: Retrieve load path.
A small to stream Data I/O.
#define DECLARE_COMPONENT(type)
AlgExecState & execState(const EventContext &ctx) const override
reference to AlgExecState of Alg
virtual bool collect(IRegistry *dir, int level)
Store agent's classback.
TYPE * get() const
Get interface pointer.
DataStoreItem * findItem(const std::string &path)
Find single item identified by its path (exact match)
StatusCode service(const Gaudi::Utils::TypeNameString &name, T *&svc, bool createIf=true)
Templated method to access a service by name.
virtual StatusCode writeObjects()
Select the different objects and write them to file.
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
SmartIF< IConversionSvc > m_pConversionSvc
Keep reference to the data conversion service.
virtual StatusCode connectOutput(const std::string &outputFile)=0
Connect the output file to the service.
StatusCode initialize() override
Initialize OutputStream.
virtual void fireIncident(const Incident &incident)=0
Fire an Incident.
virtual StatusCode connectConversionSvc()
MsgStream & warning() const
shortcut for the method msgStream(MSG::WARNING)
AlgDependentItems m_algDependentItems
Items to be saved for specific algorithms.
virtual StatusCode commitOutput(const std::string &outputFile, bool do_commit)=0
Commit pending output.
std::vector< Gaudi::Algorithm * > m_vetoAlgs
Vector of Algorithms that this stream is vetoed by.
Gaudi::Property< std::vector< std::string > > m_requireNames
This class is used for returning status codes from appropriate routines.
Items m_itemList
Vector of items to be saved to this stream.
void addItem(Items &itms, const std::string &descriptor)
Add item to output streamer list.
GAUDI_API const EventContext & currentContext()
The IRegistry represents the entry door to the environment any data object residing in a transient da...
Gaudi::Property< AlgDependentItemNames > m_algDependentItemList
SmartIF< IDataManagerSvc > m_pDataManager
Keep reference to the data manager service.
virtual StatusCode retrieveObject(IRegistry *pDirectory, boost::string_ref path, DataObject *&pObject)=0
Retrieve object identified by its directory entry.
void clearSelection()
Clear list of selected objects.
SmartIF< IIncidentSvc > m_incidentSvc
Reference to the incident service.
virtual DataObject * object() const =0
Retrieve object behind the link.
StatusCode execute() override
Working entry point.
Gaudi::Property< std::string > m_storeName
MsgStream & debug() const
shortcut for the method msgStream(MSG::DEBUG)
virtual void setAddress(IOpaqueAddress *pAddress)=0
Set/Update Opaque storage address.
const StatusCode & ignore() const
Ignore/check StatusCode.
Base class for all Incidents (computing events).
Base class from which all concrete algorithm classes should be derived.
Gaudi::Property< bool > m_doPreLoadOpt
constexpr static const auto FAILURE
SmartIF< ISvcLocator > & serviceLocator() const override
The standard service locator.
Data persistency service interface.
void reset(TYPE *ptr=nullptr)
Set the internal pointer to the passed one disposing of the old one.
StatusCode collectFromSubTree(DataObject *)
void decodeAlgorithms(Gaudi::Property< std::vector< std::string >> &theNames, std::vector< Gaudi::Algorithm * > &theAlgs)
Decode specified list of Algorithms.
Opaque address interface definition.
MsgStream & fatal() const
shortcut for the method msgStream(MSG::FATAL)
Gaudi::Property< std::string > m_persName
virtual IOpaqueAddress * address() const =0
Retrieve opaque storage address.
Gaudi::Algorithm * decodeAlgorithm(const std::string &theName)
Decode a single algorithm name.
A DataObject is the base class of any identifiable object on any data store.
Gaudi::Property< ItemNames > m_itemNames
virtual StatusCode collectObjects()
Collect all objects to be written to the output stream.
virtual StatusCode fillRepRefs(IOpaqueAddress *pAddress, DataObject *pObject)=0
Resolve the references of the converted object.
void toupper(std::string &s)
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
std::vector< Gaudi::Algorithm * > m_acceptAlgs
Vector of Algorithms that this stream accepts.
bool m_fireIncidents
should I fire incidents for writing opening/closing etc? in the baseclass, always fire the incidents ...
Items m_optItemList
Vector of optional items to be saved to this stream.