| The Gaudi Framework v29r0 (ff2e7097)

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

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

Public Member Functions | Private Attributes | List of all members
CollectionCloneAlg Class Reference

Small algorithm, which allows to merge N-tuples in a generic way. More...

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

## Public Member Functions
| ~CollectionCloneAlg () override=default
| Standard Destructor. More...
StatusCode | initialize () override
| Initialize. More...
StatusCode | finalize () override
| Finalize. More...
StatusCode | execute () override
| Execute procedure. More...
virtual StatusCode | book (const NTuple::Tuple *nt)
| Book the N-tuple according to the specification. More...
virtual StatusCode | checkInput (const NTuple::Tuple *clone, const NTuple::Tuple *src)
StatusCode | mergeEntries (const std::string &input)
| Merge the entries of a single input tuple into the output. More...
StatusCode | connect ()
| Connect input and output N-tuples. More...
StatusCode | mergeInputTuples ()
| Merge all N-tuple entries. More...
Public Member Functions inherited from Algorithm
| Algorithm (const std::string &name, ISvcLocator *svcloc, const std::string &version=PACKAGE_VERSION)
| Constructor. 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 (const EventContext &ctx) 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) const 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 | isSequence () const override
| Are we a Sequence? More...
bool | filterPassed () const override
| Did this algorithm pass or fail its filter criterion for the last event? More...
void | setFilterPassed (bool state) const override
| Set the filter passed flag to the specified state. More...
unsigned 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
SmartIF< IDataProviderSvc > & | detSvc () const
| The standard detector data service. More...
SmartIF< IDataProviderSvc > & | detDataService () const
SmartIF< IConversionSvc > & | detCnvSvc () const
| The standard detector data persistency conversion service. More...
SmartIF< IConversionSvc > & | detDataCnvService () const
SmartIF< IDataProviderSvc > & | eventSvc () const
| The standard event data service. More...
SmartIF< IDataProviderSvc > & | evtSvc () const
| shortcut for method eventSvc More...
SmartIF< IDataProviderSvc > & | eventDataService () const
SmartIF< IConversionSvc > & | eventCnvSvc () const
| The standard event data persistency conversion service. More...
SmartIF< IConversionSvc > & | eventDataCnvService () const
SmartIF< IHistogramSvc > & | histoSvc () const
| The standard histogram service. More...
SmartIF< IHistogramSvc > & | histogramDataService () const
SmartIF< INTupleSvc > & | ntupleSvc () const
| The standard N tuple service. More...
SmartIF< INTupleSvc > & | ntupleService () const
SmartIF< IRndmGenSvc > & | randSvc () const
| The standard RandomGen service, Return a pointer to the 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
SmartIF< IAlgExecStateSvc > & | algExecStateSvc () 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 | setProperties ()
| Set the algorithm's properties. More...
template<class T >
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, ToolHandle< T > &hndl, const std::string &doc="none")
template<class T >
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, ToolHandleArray< T > &hndlArr, const std::string &doc="none")
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...
const EventContext & | getContext () const override
| get the context More...
virtual void | acceptDHVisitor (IDataHandleVisitor *) const override
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)
template<class T >
void | addToolsArray (ToolHandleArray< T > &hndlArr)
const std::vector< IAlgTool * > & | tools () const
bool | isIOBound () const
void | setIOBound (bool value)
unsigned int | cardinality () const override
| Return the cardinality. More...
const std::vector< std::string > & | neededResources () const override
std::ostream & | toControlFlowExpression (std::ostream &os) const override
| Produce string represention of the control flow expression. More...
Public Member Functions inherited from DataHandleHolderBase< PropertyHolder< CommonMessaging< implements< IAlgorithm, IDataHandleHolder, IProperty, IStateful > > > >
std::vector< Gaudi::DataHandle * > | inputHandles () const override
std::vector< Gaudi::DataHandle * > | outputHandles () const override
virtual const DataObjIDColl & | extraInputDeps () const override
virtual const DataObjIDColl & | extraOutputDeps () const override
void | declare (Gaudi::DataHandle &handle) override
void | renounce (Gaudi::DataHandle &handle) override
const DataObjIDColl & | inputDataObjs () const override
const DataObjIDColl & | outputDataObjs () const override
void | addDependency (const DataObjID &id, const Gaudi::DataHandle::Mode &mode) override
Public Member Functions inherited from extends< PropertyHolder< CommonMessaging< implements< IAlgorithm, IDataHandleHolder, IProperty, IStateful > > >, IDataHandleHolder >
void * | i_cast (const InterfaceID &tid) const override
| Implementation of IInterface::i_cast. More...
StatusCode | queryInterface (const InterfaceID &ti, void **pp) override
| Implementation of IInterface::queryInterface. More...
std::vector< std::string > | getInterfaceNames () const override
| Implementation of IInterface::getInterfaceNames. More...
| ~extends () override=default
| Virtual destructor. More...
Public Member Functions inherited from PropertyHolder< CommonMessaging< implements< IAlgorithm, IDataHandleHolder, IProperty, IStateful > > >
| PropertyHolder ()=default
| ~PropertyHolder () override=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, TYPE &value, const std::string &doc="none") const
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
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, GaudiHandleBase &ref, const std::string &doc="none")
| Specializations for various GaudiHandles. More...
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, GaudiHandleArrayBase &ref, const std::string &doc="none")
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, DataObjectHandleBase &ref, const std::string &doc="none")
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...
Public Member Functions inherited from extend_interfaces< Interfaces... >
| ~extend_interfaces () override=default
| Virtual destructor. More...

## Private Attributes
Gaudi::Property< std::string > | m_tupleSvc {this, "EvtTupleSvc", "EvtTupleSvc", "name of the data provider service"}
Gaudi::Property< std::vector< std::string > > | m_inputs {this, "Input", {}, "input specifications"}
Gaudi::Property< std::string > | m_output {this, "Output", {}, "output specification"}
SmartIF< INTupleSvc > | m_dataSvc
| Reference to data provider service. More...
std::string | m_rootName
| Name of the root leaf (obtained at initialize) More...
std::string | m_outName
| Output tuple name. More...
std::string | m_criteria
| Selection criteria (if any) More...
std::string | m_selectorName
| Selector factory. More...

## Additional Inherited Members
Public Types inherited from Algorithm
typedef Gaudi::PluginService::Factory< IAlgorithm *, const std::string &, ISvcLocator * > | Factory
Public Types inherited from extends< PropertyHolder< CommonMessaging< implements< IAlgorithm, IDataHandleHolder, IProperty, IStateful > > >, IDataHandleHolder >
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 PropertyHolder< CommonMessaging< implements< IAlgorithm, IDataHandleHolder, IProperty, IStateful > > >
using | PropertyHolderImpl = PropertyHolder< CommonMessaging< implements< IAlgorithm, IDataHandleHolder, IProperty, IStateful > > >
| Typedef used to refer to this class from derived classes, as in. More...
Public Types inherited from CommonMessaging< implements< IAlgorithm, IDataHandleHolder, 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 Algorithm
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 DataHandleHolderBase< PropertyHolder< CommonMessaging< implements< IAlgorithm, IDataHandleHolder, IProperty, IStateful > > > >
void | initDataHandleHolder ()
| initializes all handles - called by the sysInitialize method of any descendant of this More...
Protected Member Functions inherited from PropertyHolder< CommonMessaging< implements< IAlgorithm, IDataHandleHolder, IProperty, IStateful > > >
Gaudi::Details::PropertyBase * | property (const std::string &name) const
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 inherited from Algorithm
std::unique_ptr< IDataHandleVisitor > | m_updateDataHandles
| Hook for for derived classes to provide a custom visitor for data handles. More...
Protected Attributes inherited from DataHandleHolderBase< PropertyHolder< CommonMessaging< implements< IAlgorithm, IDataHandleHolder, IProperty, IStateful > > > >
DataObjIDColl | m_inputDataObjs
DataObjIDColl | m_outputDataObjs

## Detailed Description

Small algorithm, which allows to merge N-tuples in a generic way.

In the options directory an python interface is presented, which shows how to steer this algorithm in a standaqlone program.

Author
  : M.Frank

Version
  : 1.0

Definition at line 109 of file CollectionCloneAlg.cpp.

## Constructor & Destructor Documentation

CollectionCloneAlg::~CollectionCloneAlg | ( |  | ) |
| override default

Standard Destructor.

## Member Function Documentation

virtual StatusCode CollectionCloneAlg::book | ( | const NTuple::Tuple * | nt | ) |
| inline virtual

Book the N-tuple according to the specification.

Definition at line 193 of file CollectionCloneAlg.cpp.

194 {
195 MsgStream log( msgSvc(), name() );
196 const INTuple::ItemContainer& items = nt->items();
197 StatusCode status = StatusCode::SUCCESS;
198 INTuple::ItemContainer::const_iterator i;
199 NTuple::Tuple* tuple = m_dataSvc->book( m_outName, nt->clID(), nt->title() );
200 for ( i = items.begin(); i != items.end(); ++i ) {
201 long type = ( *i )->type();
202 switch ( type ) {
203 case DataTypeInfo::UCHAR:
204 status = createItem( log, tuple, *i, (unsigned char)0 );
205 break;
206 case DataTypeInfo::USHORT:
207 status = createItem( log, tuple, *i, (unsigned short)0 );
208 break;
209 case DataTypeInfo::UINT:
210 status = createItem( log, tuple, *i, (unsigned int)0 );
211 break;
212 case DataTypeInfo::ULONG:
213 status = createItem( log, tuple, *i, (unsigned long)0 );
214 break;
215 case DataTypeInfo::CHAR:
216 status = createItem( log, tuple, *i, char( 0 ) );
217 break;
218 case DataTypeInfo::SHORT:
219 status = createItem( log, tuple, *i, short( 0 ) );
220 break;
221 case DataTypeInfo::INT:
222 status = createItem( log, tuple, *i, int( 0 ) );
223 break;
224 case DataTypeInfo::LONG:
225 status = createItem( log, tuple, *i, long( 0 ) );
226 break;
227 case DataTypeInfo::BOOL:
228 status = createItem( log, tuple, *i, false );
229 break;
230 case DataTypeInfo::FLOAT:
231 status = createItem( log, tuple, *i, float( 0.0 ) );
232 break;
233 case DataTypeInfo::DOUBLE:
234 status = createItem( log, tuple, *i, double( 0.0 ) );
235 break;
236 case DataTypeInfo::OBJECT_ADDR:
237 status = createItem( log, tuple, *i, (IOpaqueAddress*)0 );
238 break;
239 case DataTypeInfo::POINTER:
240 status = createItem( log, tuple, *i, (void*)0 );
241 break;
242 case DataTypeInfo::STRING:
243 // status = createItem(log, tuple, *i, (std::string*)0);
244 // break;
245 case DataTypeInfo::NTCHAR:
246 // status = createItem(log, tuple, *i, (char*)0);
247 // break;
248 case DataTypeInfo::UNKNOWN:
249 default:
250 status = StatusCode::FAILURE;
251 break;
252 }
253 }
254 return status;
255 }
MsgStream
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
StatusCode::SUCCESS
Definition: StatusCode.h:31
DataTypeInfo::POINTER
Definition: DataTypeInfo.h:41
Algorithm::name
const std::string & name() const override
The identifying name of the algorithm object.
Definition: Algorithm.cpp:731
StatusCode::FAILURE
Definition: StatusCode.h:31
DataTypeInfo::INT
Definition: DataTypeInfo.h:32
DataTypeInfo::CHAR
Definition: DataTypeInfo.h:30
std::vector::end
T end(T...args)
DataTypeInfo::STRING
Definition: DataTypeInfo.h:37
DataTypeInfo::SHORT
Definition: DataTypeInfo.h:31
DataTypeInfo::NTCHAR
Definition: DataTypeInfo.h:38
CollectionCloneAlg::m_dataSvc
SmartIF< INTupleSvc > m_dataSvc
Reference to data provider service.
Definition: CollectionCloneAlg.cpp:117
DataObject::clID
virtual const CLID & clID() const
Retrieve reference to class definition structure.
Definition: DataObject.cpp:62
DataTypeInfo::UINT
Definition: DataTypeInfo.h:28
DataTypeInfo::USHORT
Definition: DataTypeInfo.h:27
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
CollectionCloneAlg::m_outName
std::string m_outName
Output tuple name.
Definition: CollectionCloneAlg.cpp:121
DataTypeInfo::BOOL
Definition: DataTypeInfo.h:34
DataTypeInfo::UCHAR
Definition: DataTypeInfo.h:26
DataTypeInfo::ULONG
Definition: DataTypeInfo.h:29
DataTypeInfo::LONG
Definition: DataTypeInfo.h:33
DataTypeInfo::DOUBLE
Definition: DataTypeInfo.h:36
DataTypeInfo::UNKNOWN
Definition: DataTypeInfo.h:25
NTuple::Tuple
Abstract base class which allows the user to interact with the actual N tuple implementation.
Definition: NTuple.h:412
DataTypeInfo::OBJECT_ADDR
Definition: DataTypeInfo.h:42
std::vector
STL class.
std::vector::begin
T begin(T...args)
CommonMessagingBase::msgSvc
SmartIF< IMessageSvc > & msgSvc() const
The standard message service.
Definition: CommonMessaging.h:76
INTuple::items
virtual ItemContainer & items()=0
Access item container.
DataTypeInfo::FLOAT
Definition: DataTypeInfo.h:35
IOpaqueAddress
Opaque address interface definition.
Definition: IOpaqueAddress.h:23
Algorithm::type
const std::string & type() const override
The type of the algorithm object.
Definition: Algorithm.h:166
INTuple::title
virtual const std::string & title() const =0
Object title.
INTupleSvc::book
virtual NTuple::Tuple * book(const std::string &fullPath, const CLID &type, const std::string &title)=0
Book Ntuple and register it with the data store.
Gaudi.Configuration.log
log
Definition: Configuration.py:13

virtual StatusCode CollectionCloneAlg::checkInput | ( | const NTuple::Tuple * | clone,
|  | const NTuple::Tuple * | src
| ) |  |
| inline virtual

Definition at line 258 of file CollectionCloneAlg.cpp.

259 {
260 MsgStream log( msgSvc(), name() );
261 if ( 0 != clone && 0 != src ) {
262 const INTuple::ItemContainer& clone_items = clone->items();
263 const std::string clone_id = clone->registry()->identifier();
264 const std::string src_id = src->registry()->identifier();
265
266 INTuple::ItemContainer::const_iterator i;
267 log << MSG::ERROR;
268 for ( i = clone_items.begin(); i != clone_items.end(); ++i ) {
269 const INTupleItem* itm = *i;
270 const std::string& nam = itm->name();
271 const INTupleItem* src_itm = src->find( nam );
272 if ( !src_itm ) {
273 log << "Tuple item " << nam << " not present in " << src_id << endmsg;
274 return StatusCode::FAILURE;
275 }
276 if ( itm->type() != src_itm->type() ) {
277 log << "Tuple item " << nam << " are of different types in " << src_id << ":" << src_itm->typeName()
278 << " <-> " << clone_id << ":" << itm->typeName() << endmsg;
279 return StatusCode::FAILURE;
280 }
281 if ( itm->ndim() != src_itm->ndim() ) {
282 log << "Tuple item " << nam << " have different dimensions in " << src_id << ":" << src_itm->ndim() << " <-> "
283 << clone_id << ":" << itm->ndim() << endmsg;
284 return StatusCode::FAILURE;
285 }
286 for ( int j = 0; j < itm->ndim(); ++j ) {
287 if ( src_itm->dim( j ) != itm->dim( j ) ) {
288 log << "Tuple item " << nam << " have different dimensions in " << src_id << "[" << j
289 << "]:" << src_itm->dim( j ) << " <-> " << clone_id << "[" << j << "]:" << itm->dim( j ) << endmsg;
290 return StatusCode::FAILURE;
291 }
292 }
293 if ( itm->hasIndex() != src_itm->hasIndex() ) {
294 log << "Tuple item " << nam << " has different index colums " << src_id << ":" << src_itm->hasIndex()
295 << " <-> " << clone_id << ":" << itm->hasIndex() << endmsg;
296 return StatusCode::FAILURE;
297 }
298 if ( itm->hasIndex() ) {
299 if ( itm->index() != src_itm->index() ) {
300 log << "Tuple item " << nam << " has different index colums " << src_id << ":" << src_itm->index()
301 << " <-> " << clone_id << ":" << itm->index() << endmsg;
302 return StatusCode::FAILURE;
303 }
304 }
305 }
306 return StatusCode::SUCCESS;
307 }
308 return StatusCode::FAILURE;
309 }
INTupleItem::name
virtual const std::string & name() const =0
Access _Item name.
MsgStream
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
StatusCode::SUCCESS
Definition: StatusCode.h:31
Algorithm::name
const std::string & name() const override
The identifying name of the algorithm object.
Definition: Algorithm.cpp:731
StatusCode::FAILURE
Definition: StatusCode.h:31
std::vector::end
T end(T...args)
DataObject::registry
IRegistry * registry() const
Get pointer to Registry.
Definition: DataObject.h:72
std::string
STL class.
INTupleItem::typeName
virtual std::string typeName() const =0
Proper type name of the object.
INTupleItem::ndim
virtual long ndim() const =0
Dimension.
INTupleItem
NTuple interface class definition.
Definition: INTuple.h:27
IRegistry::identifier
virtual const id_type & identifier() const =0
Full identifier (or key)
INTupleItem::type
virtual long type() const =0
Type information of the item.
std::vector
STL class.
std::vector::begin
T begin(T...args)
INTupleItem::index
virtual const std::string & index() const =0
Access the index _Item.
CommonMessagingBase::msgSvc
SmartIF< IMessageSvc > & msgSvc() const
The standard message service.
Definition: CommonMessaging.h:76
MSG::ERROR
Definition: IMessageSvc.h:16
INTupleItem::dim
virtual long dim(long i) const =0
Access individual dimensions.
INTuple::items
virtual ItemContainer & items()=0
Access item container.
INTupleItem::hasIndex
virtual bool hasIndex() const =0
Is the tuple have an index item?
INTuple::find
virtual const INTupleItem * find(const std::string &name) const =0
Find an item row of the Ntuple (CONST)
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
Gaudi.Configuration.log
log
Definition: Configuration.py:13

StatusCode CollectionCloneAlg::connect | ( |  | ) |
| inline

Connect input and output N-tuples.

Definition at line 418 of file CollectionCloneAlg.cpp.

419 {
420 StatusCode status = StatusCode::SUCCESS;
421 for ( size_t i = 0; i < m_inputs.size(); ++i ) {
422 NTuplePtr nt( m_dataSvc.get(), m_inputs[i] );
423 if ( !( 0 == nt ) ) {
424 NTuplePtr out( m_dataSvc.get(), m_outName );
425 if ( 0 == out ) {
426 status = book( nt );
427 } else {
428 status = checkInput( out, nt );
429 }
430 if ( !status.isSuccess() ) {
431 return status;
432 } else if ( m_selectorName != "" ) {
433 SmartIF<ISelectStatement> stmt( ObjFactory::create( m_selectorName, serviceLocator() ) );
434 if ( stmt ) {
435 if ( !m_criteria.empty() ) stmt->setCriteria( m_criteria );
436 nt->attachSelector( stmt );
437 } else {
438 MsgStream log( msgSvc(), name() );
439 log << MSG::ERROR << "Failed to attach tuple selector to " << m_inputs[i] << endmsg;
440 return StatusCode::FAILURE;
441 }
442 }
443 } else {
444 MsgStream log( msgSvc(), name() );
445 log << MSG::ERROR << "Failed to access tuple: " << m_inputs[i] << endmsg;
446 return StatusCode::FAILURE;
447 }
448 }
449 return StatusCode::SUCCESS;
450 }
CollectionCloneAlg::m_criteria
std::string m_criteria
Selection criteria (if any)
Definition: CollectionCloneAlg.cpp:123
MsgStream
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
StatusCode::SUCCESS
Definition: StatusCode.h:31
SmartIF< ISelectStatement >
std::string::empty
T empty(T...args)
Algorithm::name
const std::string & name() const override
The identifying name of the algorithm object.
Definition: Algorithm.cpp:731
StatusCode::FAILURE
Definition: StatusCode.h:31
CollectionCloneAlg::book
virtual StatusCode book(const NTuple::Tuple *nt)
Book the N-tuple according to the specification.
Definition: CollectionCloneAlg.cpp:193
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:75
CollectionCloneAlg::m_inputs
Gaudi::Property< std::vector< std::string > > m_inputs
Definition: CollectionCloneAlg.cpp:113
CollectionCloneAlg::m_dataSvc
SmartIF< INTupleSvc > m_dataSvc
Reference to data provider service.
Definition: CollectionCloneAlg.cpp:117
SmartIF::get
TYPE * get() const
Get interface pointer.
Definition: SmartIF.h:82
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
CollectionCloneAlg::m_outName
std::string m_outName
Output tuple name.
Definition: CollectionCloneAlg.cpp:121
CollectionCloneAlg::checkInput
virtual StatusCode checkInput(const NTuple::Tuple *clone, const NTuple::Tuple *src)
Definition: CollectionCloneAlg.cpp:258
Algorithm::serviceLocator
SmartIF< ISvcLocator > & serviceLocator() const override
The standard service locator.
Definition: Algorithm.cpp:809
SmartDataPtr
A small class used to access easily (and efficiently) data items residing in data stores...
Definition: SmartDataPtr.h:47
CommonMessagingBase::msgSvc
SmartIF< IMessageSvc > & msgSvc() const
The standard message service.
Definition: CommonMessaging.h:76
MSG::ERROR
Definition: IMessageSvc.h:16
CollectionCloneAlg::m_selectorName
std::string m_selectorName
Selector factory.
Definition: CollectionCloneAlg.cpp:125
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
Gaudi.Configuration.log
log
Definition: Configuration.py:13

StatusCode CollectionCloneAlg::execute | ( |  | ) |
| inline override

Execute procedure.

Definition at line 183 of file CollectionCloneAlg.cpp.

184 {
185 StatusCode status = connect();
186 if ( status.isSuccess() ) {
187 status = mergeInputTuples();
188 }
189 return status;
190 }
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:75
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
CollectionCloneAlg::mergeInputTuples
StatusCode mergeInputTuples()
Merge all N-tuple entries.
Definition: CollectionCloneAlg.cpp:453
CollectionCloneAlg::connect
StatusCode connect()
Connect input and output N-tuples.
Definition: CollectionCloneAlg.cpp:418

StatusCode CollectionCloneAlg::finalize | ( |  | ) |
| inline override

Finalize.

Definition at line 176 of file CollectionCloneAlg.cpp.

177 {
178 m_dataSvc.reset();
179 return StatusCode::SUCCESS;
180 }
StatusCode::SUCCESS
Definition: StatusCode.h:31
CollectionCloneAlg::m_dataSvc
SmartIF< INTupleSvc > m_dataSvc
Reference to data provider service.
Definition: CollectionCloneAlg.cpp:117
SmartIF::reset
void reset(TYPE *ptr=nullptr)
Set the internal pointer to the passed one disposing of the old one.
Definition: SmartIF.h:92

StatusCode CollectionCloneAlg::initialize | ( |  | ) |
| inline override

Initialize.

Definition at line 135 of file CollectionCloneAlg.cpp.

136 {
137 MsgStream log( msgSvc(), name() );
138 m_rootName = "";
139 m_outName = "";
140 m_criteria = "";
141 m_selectorName = "";
142 m_dataSvc = service( m_tupleSvc, true );
143 if ( !m_dataSvc ) {
144 log << MSG::ERROR << "Failed to access service \"" << m_tupleSvc << "\"." << endmsg;
145 return StatusCode::FAILURE;
146 }
147 std::string fun;
148 using Parser = Gaudi::Utils::AttribStringParser;
149 for ( auto attrib : Parser( m_output ) ) {
150 switch (::toupper( attrib.tag[0] ) ) {
151 case 'D':
152 m_outName = std::move( attrib.value );
153 break;
154 case 'S':
155 m_criteria = std::move( attrib.value );
156 break;
157 case 'F':
158 fun = std::move( attrib.value );
159 break;
160 default:
161 break;
162 }
163 }
164 if ( m_outName.empty() ) {
165 log << MSG::ERROR << "Failed to analyze output specs:" << m_output << endmsg;
166 return StatusCode::FAILURE;
167 }
168 if ( !fun.empty() || !m_criteria.empty() ) {
169 if ( !m_criteria.empty() && fun.empty() ) fun = "NTuple::Selector";
170 m_selectorName = fun;
171 }
172 return StatusCode::SUCCESS;
173 }
Gaudi::Utils::AttribStringParser
Parse attribute strings allowing iteration over the various attributes.
Definition: AttribStringParser.h:32
CollectionCloneAlg::m_criteria
std::string m_criteria
Selection criteria (if any)
Definition: CollectionCloneAlg.cpp:123
MsgStream
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
StatusCode::SUCCESS
Definition: StatusCode.h:31
std::string::empty
T empty(T...args)
Algorithm::name
const std::string & name() const override
The identifying name of the algorithm object.
Definition: Algorithm.cpp:731
StatusCode::FAILURE
Definition: StatusCode.h:31
CollectionCloneAlg::m_dataSvc
SmartIF< INTupleSvc > m_dataSvc
Reference to data provider service.
Definition: CollectionCloneAlg.cpp:117
std::string
STL class.
CollectionCloneAlg::m_outName
std::string m_outName
Output tuple name.
Definition: CollectionCloneAlg.cpp:121
std::move
T move(T...args)
CollectionCloneAlg::m_rootName
std::string m_rootName
Name of the root leaf (obtained at initialize)
Definition: CollectionCloneAlg.cpp:119
fun
double fun(const std::vector< double > &x)
Definition: PFuncTest.cpp:26
CollectionCloneAlg::m_output
Gaudi::Property< std::string > m_output
Definition: CollectionCloneAlg.cpp:114
CollectionCloneAlg::m_tupleSvc
Gaudi::Property< std::string > m_tupleSvc
Definition: CollectionCloneAlg.cpp:112
CommonMessagingBase::msgSvc
SmartIF< IMessageSvc > & msgSvc() const
The standard message service.
Definition: CommonMessaging.h:76
MSG::ERROR
Definition: IMessageSvc.h:16
Algorithm::service
StatusCode service(const std::string &name, T *&psvc, bool createIf=true) const
Access a service by name, creating it if it doesn&#39;t already exist.
Definition: Algorithm.h:231
CollectionCloneAlg::m_selectorName
std::string m_selectorName
Selector factory.
Definition: CollectionCloneAlg.cpp:125
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:209
Gaudi.Configuration.log
log
Definition: Configuration.py:13

StatusCode CollectionCloneAlg::mergeEntries | ( | const std::string & | input | ) |
| inline

Merge the entries of a single input tuple into the output.

Definition at line 312 of file CollectionCloneAlg.cpp.

313 {
314 MsgStream log( msgSvc(), name() );
315 NTuplePtr out( m_dataSvc.get(), m_outName );
316 if ( 0 != out ) {
317 const INTuple::ItemContainer& clone_items = out->items();
318 std::vector<GenericAddress> addrVector( clone_items.size() );
319 StatusCode status = StatusCode::SUCCESS;
320 NTuplePtr nt( m_dataSvc.get(), input );
321 size_t k = 0, nentry = 0;
322 if ( 0 != nt ) {
323 const INTuple::ItemContainer& source_items = nt->items();
324 for ( k = 0; k < source_items.size(); ++k ) {
325 if ( source_items[k]->type() == DataTypeInfo::OBJECT_ADDR ) {
326 *(IOpaqueAddress**)source_items[k]->buffer() = &addrVector[k];
327 }
328 }
329 while ( status.isSuccess() ) {
330 status = m_dataSvc->readRecord( nt.ptr() );
331 if ( status.isSuccess() ) {
332 INTuple::ItemContainer::const_iterator i;
333 nentry++;
334 for ( k = 0, i = source_items.begin(); i != source_items.end(); ++i, ++k ) {
335 const INTupleItem* src_itm = *i;
336 const INTupleItem* out_itm = out->find( src_itm->name() );
337 size_t size = 0;
338 switch ( ( *i )->type() ) {
339 case DataTypeInfo::UCHAR:
340 size = sizeof( unsigned char );
341 break;
342 case DataTypeInfo::USHORT:
343 size = sizeof( unsigned short );
344 break;
345 case DataTypeInfo::UINT:
346 size = sizeof( unsigned int );
347 break;
348 case DataTypeInfo::ULONG:
349 size = sizeof( unsigned long );
350 break;
351 case DataTypeInfo::CHAR:
352 size = sizeof( char );
353 break;
354 case DataTypeInfo::SHORT:
355 size = sizeof( short );
356 break;
357 case DataTypeInfo::INT:
358 size = sizeof( int );
359 break;
360 case DataTypeInfo::LONG:
361 size = sizeof( long );
362 break;
363 case DataTypeInfo::BOOL:
364 size = sizeof( bool );
365 break;
366 case DataTypeInfo::FLOAT:
367 size = sizeof( float );
368 break;
369 case DataTypeInfo::DOUBLE:
370 size = sizeof( double );
371 break;
372 case DataTypeInfo::STRING:
373 *(std::string*)out_itm->buffer() = *(std::string*)src_itm->buffer();
374 size = 0;
375 break;
376 case DataTypeInfo::NTCHAR:
377 size = ::strlen( (const char*)src_itm->buffer() ) + 1;
378 break;
379 case DataTypeInfo::POINTER: {
380 *(void**)out_itm->buffer() = *(void**)src_itm->buffer();
381 size = 0;
382 } break;
383 case DataTypeInfo::OBJECT_ADDR: {
384 IOpaqueAddress* ppA1 = &addrVector[k];
385 IOpaqueAddress** ppA2 = (IOpaqueAddress**)out_itm->buffer();
386 *ppA2 = ppA1;
387 size = 0;
388 } break;
389 case DataTypeInfo::UNKNOWN:
390 default:
391 size = 0;
392 break;
393 }
394 if ( size > 0 ) {
395 ::memcpy( (void*)out_itm->buffer(), src_itm->buffer(), size * src_itm->length() );
396 }
397 }
398 status = m_dataSvc->writeRecord( out.ptr() );
399 if ( !status.isSuccess() ) {
400 log << MSG::ERROR << "Failed to write record " << nentry << " from " << input << " to " << m_outName
401 << endmsg;
402 }
403 }
404 }
405 log << MSG::INFO << "End of reading tuple " << input << " after " << nentry << " entries." << endmsg;
406
407 if ( nentry > 0 || m_selectorName != "" ) {
408 return StatusCode::SUCCESS;
409 }
410 return StatusCode::FAILURE;
411 }
412 log << MSG::ERROR << "Failed to access input: " << input << endmsg;
413 }
414 return StatusCode::FAILURE;
415 }
INTupleItem::name
virtual const std::string & name() const =0
Access _Item name.
MsgStream
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
StatusCode::SUCCESS
Definition: StatusCode.h:31
DataTypeInfo::POINTER
Definition: DataTypeInfo.h:41
Algorithm::name
const std::string & name() const override
The identifying name of the algorithm object.
Definition: Algorithm.cpp:731
StatusCode::FAILURE
Definition: StatusCode.h:31
DataTypeInfo::INT
Definition: DataTypeInfo.h:32
DataTypeInfo::CHAR
Definition: DataTypeInfo.h:30
std::vector::end
T end(T...args)
DataTypeInfo::STRING
Definition: DataTypeInfo.h:37
DataTypeInfo::SHORT
Definition: DataTypeInfo.h:31
DataTypeInfo::NTCHAR
Definition: DataTypeInfo.h:38
CollectionCloneAlg::m_dataSvc
SmartIF< INTupleSvc > m_dataSvc
Reference to data provider service.
Definition: CollectionCloneAlg.cpp:117
std::string
STL class.
SmartIF::get
TYPE * get() const
Get interface pointer.
Definition: SmartIF.h:82
INTupleItem
NTuple interface class definition.
Definition: INTuple.h:27
INTupleItem::length
virtual long length() const =0
Access the buffer length.
DataTypeInfo::UINT
Definition: DataTypeInfo.h:28
DataTypeInfo::USHORT
Definition: DataTypeInfo.h:27
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
INTupleSvc::writeRecord
virtual StatusCode writeRecord(NTuple::Tuple *tuple)=0
Write single record to N tuple.
CollectionCloneAlg::m_outName
std::string m_outName
Output tuple name.
Definition: CollectionCloneAlg.cpp:121
DataTypeInfo::BOOL
Definition: DataTypeInfo.h:34
DataTypeInfo::UCHAR
Definition: DataTypeInfo.h:26
DataTypeInfo::ULONG
Definition: DataTypeInfo.h:29
DataTypeInfo::LONG
Definition: DataTypeInfo.h:33
DataTypeInfo::DOUBLE
Definition: DataTypeInfo.h:36
DataTypeInfo::UNKNOWN
Definition: DataTypeInfo.h:25
INTupleItem::buffer
virtual const void * buffer() const =0
Access data buffer (CONST)
std::vector::size
T size(T...args)
DataTypeInfo::OBJECT_ADDR
Definition: DataTypeInfo.h:42
std::vector
STL class.
std::vector::begin
T begin(T...args)
INTupleSvc::readRecord
virtual StatusCode readRecord(NTuple::Tuple *tuple)=0
Read single record from N tuple.
SmartDataPtr
A small class used to access easily (and efficiently) data items residing in data stores...
Definition: SmartDataPtr.h:47
CommonMessagingBase::msgSvc
SmartIF< IMessageSvc > & msgSvc() const
The standard message service.
Definition: CommonMessaging.h:76
MSG::ERROR
Definition: IMessageSvc.h:16
DataTypeInfo::FLOAT
Definition: DataTypeInfo.h:35
IOpaqueAddress
Opaque address interface definition.
Definition: IOpaqueAddress.h:23
MSG::INFO
Definition: IMessageSvc.h:16
Algorithm::type
const std::string & type() const override
The type of the algorithm object.
Definition: Algorithm.h:166
CollectionCloneAlg::m_selectorName
std::string m_selectorName
Selector factory.
Definition: CollectionCloneAlg.cpp:125
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
Gaudi.Configuration.log
log
Definition: Configuration.py:13

StatusCode CollectionCloneAlg::mergeInputTuples | ( |  | ) |
| inline

Merge all N-tuple entries.

Definition at line 453 of file CollectionCloneAlg.cpp.

454 {
455 MsgStream log( msgSvc(), name() );
456 for ( const auto& input : m_inputs ) {
457 StatusCode sc = mergeEntries( input );
458 if ( !sc.isSuccess() ) {
459 log << MSG::ERROR << "Failed to merge tuple:" << input << endmsg;
460 return sc;
461 }
462 }
463 return StatusCode::SUCCESS;
464 }
MsgStream
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
StatusCode::SUCCESS
Definition: StatusCode.h:31
Algorithm::name
const std::string & name() const override
The identifying name of the algorithm object.
Definition: Algorithm.cpp:731
StatusCode::isSuccess
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:75
CollectionCloneAlg::m_inputs
Gaudi::Property< std::vector< std::string > > m_inputs
Definition: CollectionCloneAlg.cpp:113
CollectionCloneAlg::mergeEntries
StatusCode mergeEntries(const std::string &input)
Merge the entries of a single input tuple into the output.
Definition: CollectionCloneAlg.cpp:312
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:28
CommonMessagingBase::msgSvc
SmartIF< IMessageSvc > & msgSvc() const
The standard message service.
Definition: CommonMessaging.h:76
MSG::ERROR
Definition: IMessageSvc.h:16
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
Gaudi.Configuration.log
log
Definition: Configuration.py:13

## Member Data Documentation

std::string CollectionCloneAlg::m_criteria
| private

Selection criteria (if any)

Definition at line 123 of file CollectionCloneAlg.cpp.

SmartIF<INTupleSvc> CollectionCloneAlg::m_dataSvc
| private

Reference to data provider service.

Definition at line 117 of file CollectionCloneAlg.cpp.

Gaudi::Property<std::vector<std::string> > CollectionCloneAlg::m_inputs {this, "Input", {}, "input specifications"}
| private

Definition at line 113 of file CollectionCloneAlg.cpp.

std::string CollectionCloneAlg::m_outName
| private

Output tuple name.

Definition at line 121 of file CollectionCloneAlg.cpp.

Gaudi::Property<std::string> CollectionCloneAlg::m_output {this, "Output", {}, "output specification"}
| private

Definition at line 114 of file CollectionCloneAlg.cpp.

std::string CollectionCloneAlg::m_rootName
| private

Name of the root leaf (obtained at initialize)

Definition at line 119 of file CollectionCloneAlg.cpp.

std::string CollectionCloneAlg::m_selectorName
| private

Selector factory.

Definition at line 125 of file CollectionCloneAlg.cpp.

Gaudi::Property<std::string> CollectionCloneAlg::m_tupleSvc {this, "EvtTupleSvc", "EvtTupleSvc", "name of the data provider service"}
| private

Definition at line 112 of file CollectionCloneAlg.cpp.

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

- GaudiSvc/src/NTupleSvc/CollectionCloneAlg.cpp