| The Gaudi Framework v27r1

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

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
TagCollectionStream Class Reference

Specialized output stream class for event tag collections, where the basic Event entry point should be placed as well into the collection itself. More...

`#include <PersistencySvc/TagCollectionStream.h>`

Inheritance diagram for TagCollectionStream:
[legend]
Collaboration diagram for TagCollectionStream:
[legend]

## Public Member Functions
| TagCollectionStream (const std::string &name, ISvcLocator *pSvcLocator)
| Standard algorithm Constructor. More...
| ~TagCollectionStream () override=default
| Standard Destructor. More...
StatusCode | initialize () override
| Initialize TagCollectionStream. More...
StatusCode | finalize () override
| Terminate TagCollectionStream. More...
Public Member Functions inherited from OutputStream
| OutputStream (const std::string &name, ISvcLocator *pSvcLocator)
| Standard algorithm Constructor. More...
virtual | ~OutputStream ()=default
| Standard Destructor. More...
StatusCode | initialize () override
| Initialize OutputStream. More...
StatusCode | finalize () override
| Terminate OutputStream. More...
StatusCode | execute () override
| Working entry point. More...
virtual StatusCode | connectConversionSvc ()
virtual bool | collect (IRegistry *dir, int level)
| Store agent's classback. More...
virtual StatusCode | collectObjects ()
| Collect all objects to be written to the output stream. More...
void | clearSelection ()
| Clear list of selected objects. More...
Public Member Functions inherited from Algorithm
| Algorithm (const std::string &name, ISvcLocator *svcloc, const std::string &version=PACKAGE_VERSION)
| Constructor. More...
| ~Algorithm () override=default
| Destructor. More...
StatusCode | sysStart () override
| Reinitialization method invoked by the framework. More...
StatusCode | sysInitialize () override
| Initialization method invoked by the framework. More...
StatusCode | sysReinitialize () override
| Reinitialization method invoked by the framework. More...
StatusCode | sysRestart () override
| Restart method invoked by the framework. More...
StatusCode | sysExecute () override
| The actions to be performed by the algorithm on an event. More...
StatusCode | sysStop () override
| System stop. More...
StatusCode | sysFinalize () override
| System finalization. More...
StatusCode | sysBeginRun () override
| beginRun method invoked by the framework. More...
StatusCode | sysEndRun () override
| endRun method invoked by the framework. More...
const std::string & | name () const override
| The identifying name of the algorithm object. More...
const Gaudi::StringKey & | nameKey () const override
const std::string & | type () const override
| The type of the algorithm object. More...
void | setType (const std::string &type) override
const std::string & | version () const override
unsigned int | index () const override
StatusCode | configure () override
| Dummy implementation of IStateful::configure() method. More...
StatusCode | terminate () override
| Dummy implementation of IStateful::terminate() method. More...
StatusCode | initialize () override
| the default (empty) implementation of IStateful::initialize() method More...
StatusCode | start () override
| the default (empty) implementation of IStateful::start() method More...
StatusCode | stop () override
| the default (empty) implementation of IStateful::stop() method More...
StatusCode | finalize () override
| the default (empty) implementation of IStateful::finalize() method More...
StatusCode | reinitialize () override
| the default (empty) implementation of IStateful::reinitialize() method More...
StatusCode | restart () override
| the default (empty) implementation of IStateful::restart() method More...
Gaudi::StateMachine::State | FSMState () const override
| returns the current state of the algorithm More...
Gaudi::StateMachine::State | targetFSMState () const override
| returns the state the algorithm will be in after the ongoing transition More...
bool | isExecuted () const override
| Has this algorithm been executed since the last reset? More...
void | setExecuted (bool state) override
| Set the executed flag to the specified state. More...
void | resetExecuted () override
| Reset the executed state of the Algorithm for the duration of the current event. More...
StatusCode | beginRun () override
| Algorithm begin run. More...
StatusCode | endRun () override
| Algorithm end run. This method is called at the end of the event loop. More...
bool | isEnabled () const override
| Is this algorithm enabled or disabled? More...
bool | filterPassed () const override
| Did this algorithm pass or fail its filter criterion for the last event? More...
void | setFilterPassed (bool state) override
| Set the filter passed flag to the specified state. More...
int | errorCount () const
| Get the number of failures of the algorithm. More...
template<class T >
StatusCode | service (const std::string &name, 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 &svcType, const std::string &svcName, T *&psvc) const
| Access a service by name and type, creating it if it doesn't already exist. More...
SmartIF< IService > | service (const std::string &name, const bool createIf=true, const bool quiet=false) const
| Return a pointer to the service identified by name (or "type/name") More...
template<class T >
SmartIF< T > | service (const std::string &name, bool createIf=true, bool quiet=false) const
SmartIF< IAuditorSvc > & | auditorSvc () const
| The standard auditor service.May not be invoked before sysInitialize() has been invoked. More...
SmartIF< IChronoStatSvc > & | chronoSvc () const
| The standard Chrono & Stat service, Return a pointer to the service if present. More...
SmartIF< IChronoStatSvc > & | chronoStatService () const
| Obsoleted name, kept due to the backwards compatibility. More...
SmartIF< IDataProviderSvc > & | detSvc () const
| The standard detector data service. More...
SmartIF< IDataProviderSvc > & | detDataService () const
| Obsoleted name, kept due to the backwards compatibility. More...
SmartIF< IConversionSvc > & | detCnvSvc () const
| The standard detector data persistency conversion service. More...
SmartIF< IConversionSvc > & | detDataCnvService () const
| Obsoleted name, kept due to the backwards compatibility. More...
SmartIF< IDataProviderSvc > & | eventSvc () const
| The standard event data service. More...
SmartIF< IDataProviderSvc > & | evtSvc () const
| shortcut for method eventSvc More...
SmartIF< IDataProviderSvc > & | eventDataService () const
| Obsoleted name, kept due to the backwards compatibility. More...
SmartIF< IConversionSvc > & | eventCnvSvc () const
| The standard event data persistency conversion service. More...
SmartIF< IConversionSvc > & | eventDataCnvService () const
| Obsoleted name, kept due to the backwards compatibility. More...
SmartIF< IHistogramSvc > & | histoSvc () const
| The standard histogram service. More...
SmartIF< IHistogramSvc > & | histogramDataService () const
| Obsoleted name, kept due to the backwards compatibility. More...
SmartIF< INTupleSvc > & | ntupleSvc () const
| The standard N tuple service. More...
SmartIF< INTupleSvc > & | ntupleService () const
| Obsoleted name, kept due to the backwards compatibility. More...
SmartIF< IRndmGenSvc > & | randSvc () const
| AIDA-based NTuple service Returns a pointer to the AIDATuple service if present. More...
SmartIF< IToolSvc > & | toolSvc () const
| The standard ToolSvc service, Return a pointer to the service if present. More...
SmartIF< IExceptionSvc > & | exceptionSvc () const
| Get the exception Service. More...
SmartIF< IAlgContextSvc > & | contextSvc () const
| get Algorithm Context Service More...
SmartIF< ITimelineSvc > & | timelineSvc () const
SmartIF< ISvcLocator > & | serviceLocator () const override
| The standard service locator. More...
SmartIF< ISvcLocator > & | svcLoc () const
| shortcut for method serviceLocator More...
SmartIF< IHiveWhiteBoard > & | whiteboard () const
bool | registerContext () const
| register for Algorithm Context Service? More...
StatusCode | createSubAlgorithm (const std::string &type, const std::string &name, Algorithm *&pSubAlg)
| Create a sub algorithm. More...
const std::vector< Algorithm * > * | subAlgorithms () const
| List of sub-algorithms. Returns a pointer to a vector of (sub) Algorithms. More...
std::vector< Algorithm * > * | subAlgorithms ()
| List of sub-algorithms. Returns a pointer to a vector of (sub) Algorithms. More...
StatusCode | setProperty (const Property &p) override
| Implementation of IProperty::setProperty. More...
StatusCode | setProperty (const std::string &s) override
| Implementation of IProperty::setProperty. More...
StatusCode | setProperty (const std::string &n, const std::string &v) override
| Implementation of IProperty::setProperty. More...
StatusCode | getProperty (Property *p) const override
| Implementation of IProperty::getProperty. More...
const Property & | getProperty (const std::string &name) const override
| Implementation of IProperty::getProperty. More...
StatusCode | getProperty (const std::string &n, std::string &v) const override
| Implementation of IProperty::getProperty. More...
const std::vector< Property * > & | getProperties () const override
| Implementation of IProperty::getProperties. More...
bool | hasProperty (const std::string &name) const override
| Implementation of IProperty::hasProperty. More...
PropertyMgr * | getPropertyMgr ()
StatusCode | setProperties ()
| Set the algorithm's properties. More...
template<class T >
Property * | declareProperty (const std::string &name, T &property, const std::string &doc="none") const
| Declare the named property. More...
Property * | declareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="") const
| Declare remote named properties. More...
template<class T >
Property * | declareProperty (const std::string &name, ToolHandle< T > &hndl, const std::string &doc="none") const
template<class T >
Property * | declareProperty (const std::string &name, ToolHandleArray< T > &hndlArr, const std::string &doc="none") const
SmartIF< IMonitorSvc > & | monitorSvc () const
| Access the monitor service. More...
template<class T >
void | declareInfo (const std::string &name, const T &var, const std::string &desc) const
| Declare monitoring information. More...
void | declareInfo (const std::string &name, const std::string &format, const void *var, int size, const std::string &desc) const
| Declare monitoring information (special case) More...
template<class TYPE >
StatusCode | setProperty (const std::string &name, const TYPE &value)
| set the property form the value More...
EventContext * | getContext () const
| get the context More...
void | setContext (EventContext *context)
| set the context More...
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override
virtual const DataObjIDColl & | extraInputDeps () const override
virtual const DataObjIDColl & | extraOutputDeps () const override
virtual void | acceptDHVisitor (IDataHandleVisitor *) const override
const DataObjIDColl & | inputDataObjs () const
const DataObjIDColl & | outputDataObjs () const
void | commitHandles () override
void | registerTool (IAlgTool *tool) const
void | deregisterTool (IAlgTool *tool) const
template<class T >
StatusCode | declareTool (ToolHandle< T > &handle, std::string toolTypeAndName="", bool createIf=true)
const std::vector< IAlgTool * > & | tools () const
bool | isClonable () const override
| Specifies the clonability of the algorithm. More...
unsigned int | cardinality () const override
| Return the cardinality. More...
const std::vector< std::string > & | neededResources () const override
Public Member Functions inherited from CommonMessagingBase
virtual | ~CommonMessagingBase ()=default
| Virtual destructor. More...
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...
MSG::Level | msgLevel () const
| get the output level from the embedded MsgStream More...
MSG::Level | outputLevel () const __attribute__((deprecated))
| Backward compatibility function for getting the output level. More...
bool | msgLevel (MSG::Level lvl) const
| get the output level from the embedded MsgStream More...

## Protected Member Functions
StatusCode | writeObjects () override
| OutputStream override: Select the different objects and write them to file. More...
virtual StatusCode | connectAddress ()
| Connect address column, if not already connected. More...
StatusCode | writeData ()
| Write data objects. More...
StatusCode | writeTuple ()
| Write tuple data. More...
StatusCode | writeRecord ()
| Write full event record. More...
Protected Member Functions inherited from OutputStream
StatusCode | decodeAcceptAlgs ()
| Decode list of Algorithms that this stream accepts. More...
void | acceptAlgsHandler (Property &theProp)
| Handler for AcceptAlgs Property. More...
StatusCode | decodeRequireAlgs ()
| Decode list of Algorithms that this stream requires. More...
void | requireAlgsHandler (Property &theProp)
| Handler for RequireAlgs Property. More...
StatusCode | decodeVetoAlgs ()
| Decode list of Algorithms that this stream is vetoed by. More...
void | vetoAlgsHandler (Property &theProp)
| Handler for VetoAlgs Property. More...
Algorithm * | decodeAlgorithm (const std::string &theName)
| Decode a single algorithm name. More...
StatusCode | decodeAlgorithms (StringArrayProperty &theNames, std::vector< Algorithm * > &theAlgs)
| Decode specified list of Algorithms. More...
bool | isEventAccepted () const
| Test whether this event should be output. More...
DataStoreItem * | findItem (const std::string &path)
| Find single item identified by its path (exact match) More...
virtual bool | hasInput () const
| Tell if the instance has been configured with input items or not. More...
Protected Member Functions inherited from Algorithm
virtual void | declareInput (Gaudi::DataHandle *im) override
virtual void | declareOutput (Gaudi::DataHandle *im) override
std::vector< IAlgTool * > & | tools ()
bool | isInitialized () const override
| Has the Algorithm already been initialized? More...
bool | isFinalized () const override
| Has the Algorithm already been finalized? More...
void | setIndex (const unsigned int &idx) override
| set instantiation index of Alg More...
Protected Member Functions inherited from CommonMessaging< implements< IAlgorithm, IDataHandleHolder, IProperty, IStateful > >
void | updateMsgStreamOutputLevel (int level)
| Update the output level of the cached MsgStream. More...

## Protected Attributes
std::string | m_addrLeaf = "/Event"
| Property: Name of the address leaf in the transient event store. More...
std::string | m_addrColName = "Address"
| Property: Name of the address column of the tag collection. More...
std::string | m_tagName
| Property: Name of the tag collection in the transient store. More...
std::string | m_collSvcName = "NTupleSvc"
| Property: Name of the collection service. More...
bool | m_objectsFirst = true
| Property: Flag to indicate that the objects should be written first. More...
INTupleItem * | m_addrColumn = nullptr
| NTuple column to hold the opaque address of the address leaf. More...
std::string | m_topLeafName
| Name of the top leaf (performance cache) More...
bool | m_isTopLeaf = false
| Short cut flag to indicate if the address leaf is the top leaf (performace cache) More...
SmartIF< INTupleSvc > | m_collectionSvc
| Keep reference to the tuple service. More...
std::unique_ptr< GenericAddress > | m_addr
| Address buffer. More...
NTuple::Item< IOpaqueAddress * > | m_item
| Address item buffer. More...
Protected Attributes inherited from OutputStream
SmartIF< IIncidentSvc > | m_incidentSvc
| Reference to the incident service. More...
bool | m_doPreLoad
| Flag indicating whether data pre-loading should be performed. More...
bool | m_doPreLoadOpt
| Flag indicating whether optional items should be preloaded. More...
bool | m_verifyItems
| Flag to indicate that item consistency should be checked. More...
std::string | m_storeName
| Name of the service managing the data store. More...
std::string | m_persName
| Name of the persistency service capable to write data from the store. More...
std::string | m_output
| Name of the output file specification. More...
std::string | m_outputName
| Name of the output file. More...
std::string | m_outputType
| Output type: NEW(NEW,CREATE,WRITE,RECREATE), UPDATE) More...
std::unique_ptr< OutputStreamAgent > | m_agent
| Keep reference of agent. More...
SmartIF< IDataProviderSvc > | m_pDataProvider
| Keep reference to the data provider service. More...
SmartIF< IDataManagerSvc > | m_pDataManager
| Keep reference to the data manager service. More...
SmartIF< IConversionSvc > | m_pConversionSvc
| Keep reference to the data conversion service. More...
DataStoreItem * | m_currentItem
| Keep track of the current item. More...
ItemNames | m_itemNames
| Vector of item names. More...
Items | m_itemList
| Vector of items to be saved to this stream. More...
ItemNames | m_optItemNames
| Vector of item names. More...
Items | m_optItemList
| Vector of optional items to be saved to this stream. More...
AlgDependentItemNames | m_algDependentItemList
| Mapping between algorithm names, and a list of items for which, if the algorithm in question accepted the event, they should be also stored. More...
AlgDependentItems | m_algDependentItems
| Items to be saved for specific algorithms. More...
IDataSelector | m_objects
| Collection of objects being selected. More...
int | m_events
| Number of events written to this output stream. More...
StringArrayProperty | m_acceptNames
| Vector of names of Algorithms that this stream accepts. More...
StringArrayProperty | m_requireNames
| Vector of names of Algorithms that this stream requires. More...
StringArrayProperty | m_vetoNames
| Vector of names of Algorithms that this stream is vetoed by. More...
std::vector< Algorithm * > | m_acceptAlgs
| Vector of Algorithms that this stream accepts. More...
std::vector< Algorithm * > | m_requireAlgs
| Vector of Algorithms that this stream requires. More...
std::vector< Algorithm * > | m_vetoAlgs
| Vector of Algorithms that this stream is vetoed by. More...
bool | m_fireIncidents
| should I fire incidents for writing opening/closing etc? More...
Protected Attributes inherited from Algorithm
EventContext * | m_event_context
| Event specific data for multiple event processing. More...
SmartIF< PropertyMgr > | m_propertyMgr
| For management of properties. More...
std::unique_ptr< IDataHandleVisitor > | m_updateDataHandles
| Hook for for derived classes to provide a custom visitor for data handles. More...

## Additional Inherited Members
Public Types inherited from OutputStream
typedef std::vector< DataStoreItem * > | Items
typedef std::vector< std::string > | ItemNames
typedef std::map< Algorithm *, Items > | AlgDependentItems
typedef std::map< std::string, ItemNames > | AlgDependentItemNames
Public Types inherited from Algorithm
typedef Gaudi::PluginService::Factory< IAlgorithm *, const std::string &, ISvcLocator * > | Factory
Public Types inherited from CommonMessaging< implements< IAlgorithm, IDataHandleHolder, IProperty, IStateful > >
using | base_class = CommonMessaging

## Detailed Description

Specialized output stream class for event tag collections, where the basic Event entry point should be placed as well into the collection itself.

The TagCollectionStream is a rather specialized object combining features of NTuple I/O and object I/O. The main working points are:

1) Write a "normal" tag collection. The address column [property AddressColumn, default:"Address"] is added to the Ntuple identified by its name [mandatory property Collection]. The address column is set to the opaque address of the specified leaf [property "AddressLeaf", default:"/Event"]. The NTuple must be registered to the TES of the service [property: TagCollectionSvc, default:"NTupleSvc"]. This is the normal mode event tag collections work.

2) Write a tag collection with "REDIRECTED INPUT". Example: The collection is created from an intermediate file (MINI DST), but the Address column of the NTuple should point to the file e.g. containing the raw data.

- Set the property "AddressLeaf" to something different from "/Event" e.g. "/Event/DAQ/RawEvent"

Note: The actual address of "/Event" get changed. No other output should be created after writing such a tag collection.

3) Write an "EMBEDDED COLLECTION". In this mode the OutputStream and the NTuple stream are combined. depending on the property TagCollectionStream.ObjectsFirst the objects are written first and the the tags. The tag file and the file containing the objects may be identical.

Note:

- Also if the OutputStream features are NOT used, the options must still be properly set.
- Tags or objects are only written to the output stream if the event is accepted according to the output stream criteria (veto algorithms, etc.)
- If the address column is not present in the N-tuple (ie. it was not added by the N-tuple creator), it is automatically added at the first write attempt.
- If the logical N-tuple output file is not yet connected to the tuple service, it is automatically connected to the the same as the OutputStream device.

Author: M.Frank Version: 1.0

Definition at line 62 of file TagCollectionStream.h.

## Constructor & Destructor Documentation

TagCollectionStream::TagCollectionStream | ( | const std::string & | name,
|  | ISvcLocator * | pSvcLocator
| ) |  |

Standard algorithm Constructor.

Definition at line 17 of file TagCollectionStream.cpp.

18 : OutputStream(nam, pSvc), m_addr{ new GenericAddress() }
19 {
20 declareProperty("AddressLeaf", m_addrLeaf = "/Event" );
21 declareProperty("AddressColumn", m_addrColName = "Address");
22 declareProperty("TagCollectionSvc", m_collSvcName = "NTupleSvc");
23 declareProperty("ObjectsFirst", m_objectsFirst = true);
24 declareProperty("Collection", m_tagName );
25 }
TagCollectionStream::m_addrColName
std::string m_addrColName
Property: Name of the address column of the tag collection.
Definition: TagCollectionStream.h:68
TagCollectionStream::m_tagName
std::string m_tagName
Property: Name of the tag collection in the transient store.
Definition: TagCollectionStream.h:70
TagCollectionStream::m_addr
std::unique_ptr< GenericAddress > m_addr
Address buffer.
Definition: TagCollectionStream.h:84
Algorithm::declareProperty
Property * declareProperty(const std::string &name, T &property, const std::string &doc="none") const
Declare the named property.
Definition: Algorithm.h:426
GenericAddress
Generic Transient Address.
Definition: GenericAddress.h:20
TagCollectionStream::m_objectsFirst
bool m_objectsFirst
Property: Flag to indicate that the objects should be written first.
Definition: TagCollectionStream.h:74
TagCollectionStream::m_addrLeaf
std::string m_addrLeaf
Property: Name of the address leaf in the transient event store.
Definition: TagCollectionStream.h:66
TagCollectionStream::m_collSvcName
std::string m_collSvcName
Property: Name of the collection service.
Definition: TagCollectionStream.h:72
OutputStream::OutputStream
OutputStream(const std::string &name, ISvcLocator *pSvcLocator)
Standard algorithm Constructor.
Definition: OutputStream.cpp:30

TagCollectionStream::~TagCollectionStream | ( |  | ) |
| override default

Standard Destructor.

## Member Function Documentation

StatusCode TagCollectionStream::connectAddress | ( |  | ) |
| protected virtual

Connect address column, if not already connected.

Definition at line 29 of file TagCollectionStream.cpp.

29 {
30 NTuplePtr nt(m_collectionSvc, m_tagName);
31 if ( !nt ) {
32 error() << "Failed to connect to the tag collection "
33 << m_tagName << endmsg;
34 return StatusCode::FAILURE;
35 }
36 m_addrColumn = nt->find(m_addrColName);
37 if ( m_addrColumn ) return StatusCode::SUCCESS;
38 StatusCode sc = nt->addItem (m_addrColName,m_item);
39 if ( sc.isSuccess() ) {
40 m_addrColumn = m_item.operator->();
41 return sc;
42 }
43 error() << "Failed to add the address column:"
44 << m_addrColName << " to the tag collection " << m_tagName
45 << endmsg;
46 return sc;
47 }
TagCollectionStream::m_addrColName
std::string m_addrColName
Property: Name of the address column of the tag collection.
Definition: TagCollectionStream.h:68
TagCollectionStream::m_tagName
std::string m_tagName
Property: Name of the tag collection in the transient store.
Definition: TagCollectionStream.h:70
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:76
TagCollectionStream::m_addrColumn
INTupleItem * m_addrColumn
NTuple column to hold the opaque address of the address leaf.
Definition: TagCollectionStream.h:76
TagCollectionStream::m_collectionSvc
SmartIF< INTupleSvc > m_collectionSvc
Keep reference to the tuple service.
Definition: TagCollectionStream.h:82
merge_files.sc
int sc
Definition: merge_files.py:167
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:118
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
SmartDataPtr
A small class used to access easily (and efficiently) data items residing in data stores...
Definition: SmartDataPtr.h:46
TagCollectionStream::m_item
NTuple::Item< IOpaqueAddress * > m_item
Address item buffer.
Definition: TagCollectionStream.h:86
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244

StatusCode TagCollectionStream::finalize | ( |  | ) |
| override

Terminate TagCollectionStream.

Definition at line 97 of file TagCollectionStream.cpp.

97 {
98 StatusCode status = OutputStream::finalize();
99 m_collectionSvc.reset();
100 m_addrColumn = nullptr;
101 return status;
102 }
OutputStream::finalize
StatusCode finalize() override
Terminate OutputStream.
Definition: OutputStream.cpp:159
TagCollectionStream::m_addrColumn
INTupleItem * m_addrColumn
NTuple column to hold the opaque address of the address leaf.
Definition: TagCollectionStream.h:76
TagCollectionStream::m_collectionSvc
SmartIF< INTupleSvc > m_collectionSvc
Keep reference to the tuple service.
Definition: TagCollectionStream.h:82
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
SmartIF::reset
void reset(TYPE *ptr=nullptr)
Set the internal pointer to the passed one disposing of the old one.
Definition: SmartIF.h:88

StatusCode TagCollectionStream::initialize | ( |  | ) |
| override

Initialize TagCollectionStream.

Definition at line 50 of file TagCollectionStream.cpp.

50 {
51 using Parser = Gaudi::Utils::AttribStringParser;
52 std::string log_node, log_file, logical_name;
53 m_collectionSvc = service(m_collSvcName, true);
54 if ( m_collectionSvc ) {
55 std::string tmp;
56 for(auto attrib: Parser(m_output)) {
57 switch( ::toupper(attrib.tag[0]) ) {
58 case 'C':
59 m_tagName = std::move(attrib.value);
60 break;
61 case 'A':
62 m_addrLeaf = std::move(attrib.value);
63 break;
64 default:
65 tmp += attrib.tag + "='" + attrib.value + "' ";
66 break;
67 }
68 }
69 m_output = std::move(tmp);
70 std::string::size_type idx = m_tagName[0]==SEPARATOR ? m_tagName.find(SEPARATOR,1) : 0;
71 log_node = m_tagName.substr(idx,m_tagName.find(SEPARATOR,idx+1));
72 log_file = log_node + " " + m_output + " SHARED='YES'";
73 }
74 m_addrColumn = nullptr; // reset pointer to item column
75 auto sc = OutputStream::initialize(); // Now initialize the base class
76 if ( sc.isSuccess() ) {
77 auto src_mgr = m_collectionSvc.as<IDataSourceMgr>();
78 if ( src_mgr ) {
79 auto data_mgr = m_collectionSvc.as<IDataManagerSvc>();
80 if ( data_mgr ) {
81 logical_name = data_mgr->rootName();
82 logical_name += SEPARATOR;
83 logical_name += log_node;
84 m_topLeafName = m_addrLeaf.substr(0,m_addrLeaf.find(SEPARATOR,m_addrLeaf[0]=='/' ? 1 : 0));
85 m_isTopLeaf = m_topLeafName == m_addrLeaf;
86 if ( src_mgr->isConnected(logical_name) ) return sc;
87 sc = src_mgr->connect(log_file);
88 if ( sc.isSuccess() ) return sc;
89 }
90 }
91 }
92 error() << "Failed to initialize TagCollection Stream." << endmsg;
93 return StatusCode::FAILURE;
94 }
Gaudi::Utils::AttribStringParser
Parse attribute strings allowing iteration over the various attributes.
Definition: AttribStringParser.h:30
TagCollectionStream::m_tagName
std::string m_tagName
Property: Name of the tag collection in the transient store.
Definition: TagCollectionStream.h:70
SEPARATOR
constexpr char SEPARATOR
Definition: RegistryEntry.cpp:41
TagCollectionStream::m_addrColumn
INTupleItem * m_addrColumn
NTuple column to hold the opaque address of the address leaf.
Definition: TagCollectionStream.h:76
TagCollectionStream::m_collectionSvc
SmartIF< INTupleSvc > m_collectionSvc
Keep reference to the tuple service.
Definition: TagCollectionStream.h:82
merge_files.sc
int sc
Definition: merge_files.py:167
std::string
STL class.
TagCollectionStream::m_addrLeaf
std::string m_addrLeaf
Property: Name of the address leaf in the transient event store.
Definition: TagCollectionStream.h:66
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:118
SmartIF::as
SmartIF< IFace > as() const
return a new SmartIF instance to another interface
Definition: SmartIF.h:110
OutputStream::initialize
StatusCode initialize() override
Initialize OutputStream.
Definition: OutputStream.cpp:70
StatusCode::FAILURE
Definition: StatusCode.h:29
std::move
T move(T...args)
TagCollectionStream::m_collSvcName
std::string m_collSvcName
Property: Name of the collection service.
Definition: TagCollectionStream.h:72
std::string::find
T find(T...args)
IDataManagerSvc
Definition: IDataManagerSvc.h:45
IDataSourceMgr
IDataSourceMgr interface definition.
Definition: IDataSourceMgr.h:14
std::string::substr
T substr(T...args)
Algorithm::service
StatusCode service(const std::string &name, T *&psvc, bool createIf=true) const
Access a service by name, creating it if it doesn't already exist.
Definition: Algorithm.h:232
OutputStream::m_output
std::string m_output
Name of the output file specification.
Definition: OutputStream.h:49
toupper
void toupper(std::string &s)
Definition: StatusCodeSvc.cpp:10
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
TagCollectionStream::m_isTopLeaf
bool m_isTopLeaf
Short cut flag to indicate if the address leaf is the top leaf (performace cache) ...
Definition: TagCollectionStream.h:80
TagCollectionStream::m_topLeafName
std::string m_topLeafName
Name of the top leaf (performance cache)
Definition: TagCollectionStream.h:78

StatusCode TagCollectionStream::writeData | ( |  | ) |
| protected

Write data objects.

Definition at line 115 of file TagCollectionStream.cpp.

115 {
116 StatusCode sc = OutputStream::writeObjects();
117 if ( !sc.isSuccess() ) {
118 error() << "Failed to write tag collection " << m_tagName << ". "
119 << "[Object write error]" << endmsg;
120 }
121 return sc;
122 }
TagCollectionStream::m_tagName
std::string m_tagName
Property: Name of the tag collection in the transient store.
Definition: TagCollectionStream.h:70
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:76
merge_files.sc
int sc
Definition: merge_files.py:167
OutputStream::writeObjects
virtual StatusCode writeObjects()
Select the different objects and write them to file.
Definition: OutputStream.cpp:199
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:118
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244

StatusCode TagCollectionStream::writeObjects | ( |  | ) |
| override protected virtual

OutputStream override: Select the different objects and write them to file.

Reimplemented from OutputStream.

Definition at line 133 of file TagCollectionStream.cpp.

133 {
134 StatusCode status = !m_addrColumn ? connectAddress() : StatusCode::SUCCESS;
135 if ( status.isSuccess() ) {
136 status = m_objectsFirst ? writeData() : StatusCode::SUCCESS;
137 if ( status.isSuccess() && !m_addrColName.empty() ) {
138 SmartDataPtr<DataObject> top(eventSvc(), m_topLeafName);
139 if ( !top ) {
140 error() << "Failed to write tag collection " << m_tagName << ". "
141 << m_topLeafName << " not found." << endmsg;
142 return StatusCode::FAILURE;
143 }
144 IOpaqueAddress* pA = top->registry()->address();
145 if ( !pA ) {
146 error() << "Failed to write tag collection " << m_tagName << ". "
147 << m_topLeafName << "'s address not found." << endmsg;
148 return StatusCode::FAILURE;
149 }
150 std::string* par = (std::string*)m_addr->par();
151 unsigned long* ipar = (unsigned long*)m_addr->ipar();
152 m_addr->setClID(pA->clID());
153 m_addr->setSvcType(pA->svcType());
154 par[0] = pA->par()[0];
155 par[1] = pA->par()[1];
156 ipar[0] = pA->ipar()[0];
157 ipar[1] = pA->ipar()[1];
158 *(IOpaqueAddress**)(m_addrColumn->buffer()) = m_addr.get();
159 if ( m_isTopLeaf ) return writeRecord();
160 // Handle redirection mode. Normal tag collection mode
161 // is the same like leaving this out....
162 SmartDataPtr<DataObject> leaf(eventSvc(), m_addrLeaf);
163 if ( !leaf ) {
164 error() << "Failed to write tag collection " << m_tagName << ". "
165 << m_addrLeaf << " not found." << endmsg;
166 return StatusCode::FAILURE;
167 }
168 IOpaqueAddress* redir = leaf->registry()->address();
169 if ( !redir ) {
170 error() << "Failed to write tag collection " << m_tagName << ". "
171 << m_addrLeaf << "'s address not found." << endmsg;
172 return StatusCode::FAILURE;
173 }
174 par[0] = redir->par()[0];
175 ipar[0] = ~0x0;
176 ipar[1] = redir->ipar()[1];
177 return writeRecord();
178 }
179 }
180 return status;
181 }
TagCollectionStream::m_addrColName
std::string m_addrColName
Property: Name of the address column of the tag collection.
Definition: TagCollectionStream.h:68
IOpaqueAddress::par
virtual const std::string * par() const =0
Retrieve String parameters.
TagCollectionStream::m_tagName
std::string m_tagName
Property: Name of the tag collection in the transient store.
Definition: TagCollectionStream.h:70
TagCollectionStream::connectAddress
virtual StatusCode connectAddress()
Connect address column, if not already connected.
Definition: TagCollectionStream.cpp:29
std::string::empty
T empty(T...args)
TagCollectionStream::m_addr
std::unique_ptr< GenericAddress > m_addr
Address buffer.
Definition: TagCollectionStream.h:84
GenericAddress::par
const std::string * par() const override
Retrieve string parameters.
Definition: GenericAddress.h:104
GenericAddress::setSvcType
void setSvcType(long typ)
Access : set the storage type of the class id.
Definition: GenericAddress.h:100
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:76
TagCollectionStream::writeData
StatusCode writeData()
Write data objects.
Definition: TagCollectionStream.cpp:115
TagCollectionStream::m_addrColumn
INTupleItem * m_addrColumn
NTuple column to hold the opaque address of the address leaf.
Definition: TagCollectionStream.h:76
IOpaqueAddress::svcType
virtual long svcType() const =0
Retrieve service type.
TagCollectionStream::m_objectsFirst
bool m_objectsFirst
Property: Flag to indicate that the objects should be written first.
Definition: TagCollectionStream.h:74
std::string
STL class.
TagCollectionStream::m_addrLeaf
std::string m_addrLeaf
Property: Name of the address leaf in the transient event store.
Definition: TagCollectionStream.h:66
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:118
TagCollectionStream::writeRecord
StatusCode writeRecord()
Write full event record.
Definition: TagCollectionStream.cpp:125
compareOutputFiles.par
string par
Definition: compareOutputFiles.py:386
GenericAddress::setClID
void setClID(const CLID &clid)
Access : Set class ID of the link.
Definition: GenericAddress.h:92
GaudiPython.Bindings.SUCCESS
tuple SUCCESS
Definition: Bindings.py:51
IOpaqueAddress::clID
virtual const CLID & clID() const =0
Retrieve class information from link.
IOpaqueAddress::registry
virtual IRegistry * registry() const =0
Update branch name.
StatusCode::FAILURE
Definition: StatusCode.h:29
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
IRegistry::address
virtual IOpaqueAddress * address() const =0
Retrieve opaque storage address.
std::unique_ptr::get
T get(T...args)
HiveAlgSequencer.top
tuple top
Definition: HiveAlgSequencer.py:29
Algorithm::eventSvc
SmartIF< IDataProviderSvc > & eventSvc() const
The standard event data service.
SmartDataPtr
A small class used to access easily (and efficiently) data items residing in data stores...
Definition: SmartDataPtr.h:46
GenericAddress::ipar
const unsigned long * ipar() const override
Retrieve integer parameters.
Definition: GenericAddress.h:108
IOpaqueAddress
Opaque address interface definition.
Definition: IOpaqueAddress.h:23
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
TagCollectionStream::m_isTopLeaf
bool m_isTopLeaf
Short cut flag to indicate if the address leaf is the top leaf (performace cache) ...
Definition: TagCollectionStream.h:80
TagCollectionStream::m_topLeafName
std::string m_topLeafName
Name of the top leaf (performance cache)
Definition: TagCollectionStream.h:78
INTupleItem::buffer
virtual const void * buffer() const =0
Access data buffer (CONST)

StatusCode TagCollectionStream::writeRecord | ( |  | ) |
| protected

Write full event record.

Definition at line 125 of file TagCollectionStream.cpp.

125 {
126 if ( writeTuple().isSuccess() ) {
127 return m_objectsFirst ? StatusCode::SUCCESS : writeData();
128 }
129 return StatusCode::FAILURE;
130 }
TagCollectionStream::writeData
StatusCode writeData()
Write data objects.
Definition: TagCollectionStream.cpp:115
TagCollectionStream::writeTuple
StatusCode writeTuple()
Write tuple data.
Definition: TagCollectionStream.cpp:105
TagCollectionStream::m_objectsFirst
bool m_objectsFirst
Property: Flag to indicate that the objects should be written first.
Definition: TagCollectionStream.h:74
StatusCode::FAILURE
Definition: StatusCode.h:29
StatusCode::SUCCESS
Definition: StatusCode.h:30

StatusCode TagCollectionStream::writeTuple | ( |  | ) |
| protected

Write tuple data.

Definition at line 105 of file TagCollectionStream.cpp.

105 {
106 StatusCode sc = m_collectionSvc->writeRecord(m_tagName);
107 if ( !sc.isSuccess() ) {
108 error() << "Failed to write tag collection " << m_tagName << ". "
109 << "[Tuple write error]" << endmsg;
110 }
111 return sc;
112 }
TagCollectionStream::m_tagName
std::string m_tagName
Property: Name of the tag collection in the transient store.
Definition: TagCollectionStream.h:70
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:76
TagCollectionStream::m_collectionSvc
SmartIF< INTupleSvc > m_collectionSvc
Keep reference to the tuple service.
Definition: TagCollectionStream.h:82
merge_files.sc
int sc
Definition: merge_files.py:167
CommonMessagingBase::error
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
Definition: CommonMessaging.h:118
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
INTupleSvc::writeRecord
virtual StatusCode writeRecord(NTuple::Tuple *tuple)=0
Write single record to N tuple.
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244

## Member Data Documentation

std::unique_ptr<GenericAddress> TagCollectionStream::m_addr
| protected

Address buffer.

Definition at line 84 of file TagCollectionStream.h.

std::string TagCollectionStream::m_addrColName = "Address"
| protected

Property: Name of the address column of the tag collection.

Definition at line 68 of file TagCollectionStream.h.

INTupleItem* TagCollectionStream::m_addrColumn = nullptr
| protected

NTuple column to hold the opaque address of the address leaf.

Definition at line 76 of file TagCollectionStream.h.

std::string TagCollectionStream::m_addrLeaf = "/Event"
| protected

Property: Name of the address leaf in the transient event store.

Definition at line 66 of file TagCollectionStream.h.

SmartIF<INTupleSvc> TagCollectionStream::m_collectionSvc
| protected

Keep reference to the tuple service.

Definition at line 82 of file TagCollectionStream.h.

std::string TagCollectionStream::m_collSvcName = "NTupleSvc"
| protected

Property: Name of the collection service.

Definition at line 72 of file TagCollectionStream.h.

bool TagCollectionStream::m_isTopLeaf = false
| protected

Short cut flag to indicate if the address leaf is the top leaf (performace cache)

Definition at line 80 of file TagCollectionStream.h.

NTuple::Item<IOpaqueAddress*> TagCollectionStream::m_item
| protected

Address item buffer.

Definition at line 86 of file TagCollectionStream.h.

bool TagCollectionStream::m_objectsFirst = true
| protected

Property: Flag to indicate that the objects should be written first.

Definition at line 74 of file TagCollectionStream.h.

std::string TagCollectionStream::m_tagName
| protected

Property: Name of the tag collection in the transient store.

Definition at line 70 of file TagCollectionStream.h.

std::string TagCollectionStream::m_topLeafName
| protected

Name of the top leaf (performance cache)

Definition at line 78 of file TagCollectionStream.h.

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

- GaudiCommonSvc/src/PersistencySvc/TagCollectionStream.h
- GaudiCommonSvc/src/PersistencySvc/TagCollectionStream.cpp