Loading [MathJax]/extensions/tex2jax.js
The Gaudi Framework  v31r0 (aeb156f0)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
InputCopyStream.cpp
Go to the documentation of this file.
1 // Framework include files
2 #include "InputCopyStream.h"
10 #include "GaudiKernel/MsgStream.h"
11 
12 // Define the algorithm factory for the standard output data writer
14 
15 // Standard Constructor
16 InputCopyStream::InputCopyStream( const std::string& name, ISvcLocator* pSvcLocator )
17  : OutputStream( name, pSvcLocator ) {
18  m_doPreLoad = false;
19  m_doPreLoadOpt = false;
20 }
21 
22 // Initialize the instance.
25  if ( sc.isFailure() ) return sc;
26 
27  sc = toolSvc()->retrieveTool( "DataSvcFileEntriesTool", "InputCopyStreamTool", m_leavesTool );
28  return sc;
29 }
30 
31 // Finalize the instance.
34  m_leavesTool = nullptr;
35  return OutputStream::finalize();
36 }
37 
40  // Get the objects in the same file as the root node
41  try {
42  // Get all the leaves on the input stream
44 
45  // Do we need to veto anything ?
46  if ( UNLIKELY( !m_tesVetoList.empty() ) ) {
47  // Veto out locations
48  IDataStoreLeaves::LeavesList filteredLeaves;
49  filteredLeaves.reserve( leaves.size() );
50  std::copy_if( leaves.begin(), leaves.end(), std::back_inserter( filteredLeaves ),
51  [&]( IDataStoreLeaves::LeavesList::const_reference i ) {
52  return i && i->registry() &&
53  std::find( m_tesVetoList.begin(), m_tesVetoList.end(), i->registry()->identifier() ) ==
54  m_tesVetoList.end();
55  } );
56  // save the veto'ed list
57  m_objects.assign( filteredLeaves.begin(), filteredLeaves.end() );
58 
59  } else {
60  // no veto'ing, so save everything
61  m_objects.assign( leaves.begin(), leaves.end() );
62  }
63  } catch ( const GaudiException& e ) {
64  error() << e.message() << endmsg;
65  return StatusCode::FAILURE;
66  }
67 
68  // Collect the other objects from the transient store (mandatory and optional)
70 }
virtual const LeavesList & leaves() const =0
Return the list of leaves.
virtual const std::string & message() const
error message to be printed
#define UNLIKELY(x)
Definition: Kernel.h:89
Extension of OutputStream to copy the content of the main input file.
T copy_if(T...args)
StatusCode initialize() override
Initialize the instance.
Define general base for Gaudi exception.
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
Definition: ISvcLocator.h:25
IDataSelector m_objects
Collection of objects being selected.
Definition: OutputStream.h:105
StatusCode finalize() override
Terminate OutputStream.
SmartIF< IToolSvc > & toolSvc() const
The standard ToolSvc service, Return a pointer to the service if present.
Definition: Algorithm.cpp:673
STL namespace.
T end(T...args)
bool isFailure() const
Definition: StatusCode.h:130
StatusCode retrieveTool(const std::string &type, T *&tool, const IInterface *parent=nullptr, bool createIf=true)
Retrieve specified tool sub-type with tool dependent part of the name automatically assigned...
Definition: IToolSvc.h:138
A small to stream Data I/O.
Definition: OutputStream.h:28
#define DECLARE_COMPONENT(type)
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
StatusCode initialize() override
Initialize OutputStream.
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
IDataStoreLeaves * m_leavesTool
Pointer to the (public) tool used to retrieve the objects in a file.
Gaudi::Property< std::vector< std::string > > m_tesVetoList
T find(T...args)
T size(T...args)
T assign(T...args)
T begin(T...args)
T back_inserter(T...args)
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:153
StatusCode finalize() override
Finalize the instance.
constexpr static const auto FAILURE
Definition: StatusCode.h:86
virtual StatusCode releaseTool(IAlgTool *tool)=0
Release the tool.
StatusCode collectObjects() override
Collect all objects to be written to the output stream.
virtual StatusCode collectObjects()
Collect all objects to be written to the output stream.
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192
T reserve(T...args)