OutputStream.h
Go to the documentation of this file.
1 #ifndef GAUDISVC_PERSISTENCYSVC_OUTPUTSTREAM_H
2 #define GAUDISVC_PERSISTENCYSVC_OUTPUTSTREAM_H
3 
4 // Required for inheritance
5 #include "GaudiKernel/IDataSelector.h"
6 #include "GaudiKernel/IIncidentSvc.h"
7 #include "GaudiKernel/Algorithm.h"
8 #include "GaudiKernel/Property.h"
9 #include "OutputStreamAgent.h"
10 
11 // STL include files
12 #include <memory>
13 #include <vector>
14 #include <string>
15 
16 // forward declarations
17 class IIncidentSvc;
18 class IRegistry;
19 class IConversionSvc;
20 class IDataManagerSvc;
21 class OutputStreamAgent;
22 class DataStoreItem;
23 
29 class OutputStream : public Algorithm {
30 public:
31  typedef std::vector<DataStoreItem*> Items;
32  typedef std::vector<std::string> ItemNames;
33  typedef std::map< Algorithm*, Items > AlgDependentItems;
34  typedef std::map< std::string, ItemNames > AlgDependentItemNames;
35 protected:
45  std::string m_storeName;
47  std::string m_persName;
49  std::string m_output;
51  std::string m_outputName;
53  std::string m_outputType;
55  std::unique_ptr<OutputStreamAgent> m_agent;
65  ItemNames m_itemNames;
67  Items m_itemList;
69  ItemNames m_optItemNames;
74  AlgDependentItemNames m_algDependentItemList;
76  AlgDependentItems m_algDependentItems;
80  int m_events;
88  std::vector<Algorithm*> m_acceptAlgs;
90  std::vector<Algorithm*> m_requireAlgs;
92  std::vector<Algorithm*> m_vetoAlgs;
93 
94 public:
96  OutputStream(const std::string& name, ISvcLocator* pSvcLocator);
98  virtual ~OutputStream() = default;
99 protected:
103  void acceptAlgsHandler( Property& theProp );
107  void requireAlgsHandler( Property& theProp );
111  void vetoAlgsHandler( Property& theProp );
113  Algorithm* decodeAlgorithm( const std::string& theName );
116  std::vector<Algorithm*>& theAlgs );
118  bool isEventAccepted() const;
120  DataStoreItem* findItem(const std::string& path);
122  virtual StatusCode writeObjects();
123 
126 
128  virtual bool hasInput() const;
129 
130 public:
132  StatusCode initialize() override;
134  StatusCode finalize() override;
136  StatusCode execute() override;
137  // Connect to proper conversion service
140  virtual bool collect(IRegistry* dir, int level);
142  virtual StatusCode collectObjects();
144  void clearSelection();
145 
146 private:
148  void clearItems(Items& itms);
150  void addItem(Items& itms, const std::string& descriptor);
153 };
154 
155 #endif // GAUDISVC_PERSISTENCYSVC_OUTPUTSTREAM_H
StringArrayProperty m_acceptNames
Vector of names of Algorithms that this stream accepts.
Definition: OutputStream.h:82
bool isEventAccepted() const
Test whether this event should be output.
void clearItems(Items &itms)
Clear item list.
virtual bool hasInput() const
Tell if the instance has been configured with input items or not.
StatusCode decodeRequireAlgs()
Decode list of Algorithms that this stream requires.
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:78
StatusCode finalize() override
Terminate OutputStream.
virtual ~OutputStream()=default
Standard Destructor.
std::string m_storeName
Name of the service managing the data store.
Definition: OutputStream.h:45
int m_events
Number of events written to this output stream.
Definition: OutputStream.h:80
std::string m_outputType
Output type: NEW(NEW,CREATE,WRITE,RECREATE), UPDATE)
Definition: OutputStream.h:53
DataStoreItem * m_currentItem
Keep track of the current item.
Definition: OutputStream.h:63
list path
Definition: __init__.py:15
StringArrayProperty m_vetoNames
Vector of names of Algorithms that this stream is vetoed by.
Definition: OutputStream.h:86
std::map< Algorithm *, Items > AlgDependentItems
Definition: OutputStream.h:33
std::string m_outputName
Name of the output file.
Definition: OutputStream.h:51
void requireAlgsHandler(Property &theProp)
Handler for RequireAlgs Property.
std::string m_persName
Name of the persistency service capable to write data from the store.
Definition: OutputStream.h:47
std::vector< Algorithm * > m_requireAlgs
Vector of Algorithms that this stream requires.
Definition: OutputStream.h:90
IDataSelector * selectedObjects()
Return the list of selected objects.
Definition: OutputStream.h:152
SmartIF< IDataProviderSvc > m_pDataProvider
Keep reference to the data provider service.
Definition: OutputStream.h:57
AlgDependentItemNames m_algDependentItemList
Mapping between algorithm names, and a list of items for which, if the algorithm in question accepted...
Definition: OutputStream.h:74
Description of the DataStoreItem class.
Definition: DataStoreItem.h:17
std::vector< DataObject * > IDataSelector
This is only a placeholder to allow me compiling until the responsible guy does his work! M...
Definition: IDataSelector.h:8
std::unique_ptr< OutputStreamAgent > m_agent
Keep reference of agent.
Definition: OutputStream.h:55
A small to stream Data I/O.
Definition: OutputStream.h:29
std::vector< Algorithm * > m_acceptAlgs
Vector of Algorithms that this stream accepts.
Definition: OutputStream.h:88
const std::string & name() const override
The identifying name of the algorithm object.
Definition: Algorithm.cpp:919
virtual bool collect(IRegistry *dir, int level)
Store agent's classback.
DataStoreItem * findItem(const std::string &path)
Find single item identified by its path (exact match)
virtual StatusCode writeObjects()
Select the different objects and write them to file.
SmartIF< IConversionSvc > m_pConversionSvc
Keep reference to the data conversion service.
Definition: OutputStream.h:61
StatusCode initialize() override
Initialize OutputStream.
virtual StatusCode connectConversionSvc()
AlgDependentItems m_algDependentItems
Items to be saved for specific algorithms.
Definition: OutputStream.h:76
bool m_verifyItems
Flag to indicate that item consistency should be checked.
Definition: OutputStream.h:43
std::vector< DataStoreItem * > Items
Definition: OutputStream.h:31
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
Items m_itemList
Vector of items to be saved to this stream.
Definition: OutputStream.h:67
bool m_doPreLoad
Flag indicating whether data pre-loading should be performed.
Definition: OutputStream.h:39
void addItem(Items &itms, const std::string &descriptor)
Add item to output streamer list.
bool m_doPreLoadOpt
Flag indicating whether optional items should be preloaded.
Definition: OutputStream.h:41
The IRegistry represents the entry door to the environment any data object residing in a transient da...
Definition: IRegistry.h:22
SmartIF< IDataManagerSvc > m_pDataManager
Keep reference to the data manager service.
Definition: OutputStream.h:59
void clearSelection()
Clear list of selected objects.
SmartIF< IIncidentSvc > m_incidentSvc
Reference to the incident service.
Definition: OutputStream.h:37
StatusCode decodeVetoAlgs()
Decode list of Algorithms that this stream is vetoed by.
StatusCode execute() override
Working entry point.
Base class from which all concrete algorithm classes should be derived.
Definition: Algorithm.h:77
ItemNames m_itemNames
Vector of item names.
Definition: OutputStream.h:65
Property base class allowing Property* collections to be "homogeneous".
Definition: Property.h:38
ItemNames m_optItemNames
Vector of item names.
Definition: OutputStream.h:69
StatusCode decodeAlgorithms(StringArrayProperty &theNames, std::vector< Algorithm * > &theAlgs)
Decode specified list of Algorithms.
std::vector< std::string > ItemNames
Definition: OutputStream.h:32
void acceptAlgsHandler(Property &theProp)
Handler for AcceptAlgs Property.
StringArrayProperty m_requireNames
Vector of names of Algorithms that this stream requires.
Definition: OutputStream.h:84
Algorithm * decodeAlgorithm(const std::string &theName)
Decode a single algorithm name.
OutputStream(const std::string &name, ISvcLocator *pSvcLocator)
Standard algorithm Constructor.
std::string m_output
Name of the output file specification.
Definition: OutputStream.h:49
list itms
Definition: ana.py:135
std::vector< Algorithm * > m_vetoAlgs
Vector of Algorithms that this stream is vetoed by.
Definition: OutputStream.h:92
std::map< std::string, ItemNames > AlgDependentItemNames
Definition: OutputStream.h:34
virtual StatusCode collectObjects()
Collect all objects to be written to the output stream.
void vetoAlgsHandler(Property &theProp)
Handler for VetoAlgs Property.
The interface implemented by the IncidentSvc service.
Definition: IIncidentSvc.h:21
StatusCode decodeAcceptAlgs()
Decode list of Algorithms that this stream accepts.
bool m_fireIncidents
should I fire incidents for writing opening/closing etc?
Definition: OutputStream.h:125
Items m_optItemList
Vector of optional items to be saved to this stream.
Definition: OutputStream.h:71