Loading [MathJax]/extensions/tex2jax.js
The Gaudi Framework  v31r0 (aeb156f0)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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
8 #include "GaudiKernel/Property.h"
9 
10 // STL include files
11 #include <memory>
12 #include <string>
13 #include <vector>
14 
15 // forward declarations
16 class IIncidentSvc;
17 class IRegistry;
18 class IConversionSvc;
19 struct IDataManagerSvc;
20 class OutputStreamAgent;
21 class DataStoreItem;
22 
28 class OutputStream : public Algorithm {
29 public:
34 
35 public:
38 
39 protected:
40  Gaudi::Property<ItemNames> m_itemNames{this, "ItemList", {}, "vector of item names to be saved to this stream"};
42  this, "OptItemList", {}, "vector of optional item names to be saved to this stream"};
44  this,
45  "AlgDependentItemList",
46  {},
47  "mapping between algorithm names, and a list of items for which, if the "
48  "algorithm in question accepted the event, they should be also stored"};
49  Gaudi::Property<bool> m_doPreLoad{this, "Preload", true,
50  "flag indicating whether data pre-loading should be performed"};
51  Gaudi::Property<bool> m_doPreLoadOpt{this, "PreloadOptItems", false,
52  "flag indicating whether optional items should be preloaded"};
53  Gaudi::Property<std::string> m_output{this, "Output", {}, "name of the output file specification"};
54  Gaudi::Property<std::string> m_outputName{this, "OutputFile", {}, "name of the output file"};
55  Gaudi::Property<std::string> m_storeName{this, "EvtDataSvc", "EventDataSvc",
56  "name of the service managing the data store"};
57  Gaudi::Property<std::string> m_persName{this, "EvtConversionSvc", "EventPersistencySvc",
58  "name of the persistency service capable to write data from the store"};
60  this,
61  "AcceptAlgs",
62  {},
63  [this]( auto& ) { this->decodeAlgorithms( this->m_acceptNames, this->m_acceptAlgs ); },
64  "names of Algorithms that this stream accepts"};
66  this,
67  "RequireAlgs",
68  {},
69  [this]( auto& ) { this->decodeAlgorithms( this->m_requireNames, this->m_requireAlgs ); },
70  "names of Algorithms that this stream requires"};
72  this,
73  "VetoAlgs",
74  {},
75  [this]( auto& ) { this->decodeAlgorithms( this->m_vetoNames, this->m_vetoAlgs ); },
76  "names of Algorithms that this stream is vetoed by"};
77  Gaudi::Property<bool> m_verifyItems{this, "VerifyItems", true,
78  "flag to indicate that item consistency should be checked"};
79 
83  bool m_fireIncidents = true;
84 
87 
99  Items m_itemList;
103  AlgDependentItems m_algDependentItems;
107  int m_events;
108 
115 
116 protected:
118  Gaudi::Algorithm* decodeAlgorithm( const std::string& theName );
122  bool isEventAccepted() const;
126  virtual StatusCode writeObjects();
127 
129  virtual bool hasInput() const;
130 
131 public:
133  StatusCode initialize() override;
135  StatusCode finalize() override;
137  StatusCode execute() override;
138  // Connect to proper conversion service
141  virtual bool collect( IRegistry* dir, int level );
143  virtual StatusCode collectObjects();
145  void clearSelection();
146 
147 private:
149  void clearItems( Items& itms );
151  void addItem( Items& itms, const std::string& descriptor );
154 
156 };
157 
158 #endif // GAUDISVC_PERSISTENCYSVC_OUTPUTSTREAM_H
Gaudi::Property< std::vector< std::string > > m_acceptNames
Definition: OutputStream.h:59
bool isEventAccepted() const
Test whether this event should be output.
void clearItems(Items &itms)
Clear item list.
virtual bool hasInput() const
Tell if the instance has been configured with input items or not.
Gaudi::Property< std::vector< std::string > > m_vetoNames
Definition: OutputStream.h:71
IDataSelector m_objects
Collection of objects being selected.
Definition: OutputStream.h:105
StatusCode finalize() override
Terminate OutputStream.
int m_events
Number of events written to this output stream.
Definition: OutputStream.h:107
Implementation of property with value of concrete type.
Definition: Property.h:352
std::map< std::string, ItemNames > AlgDependentItemNames
Definition: OutputStream.h:33
std::string m_outputType
Output type: NEW(NEW,CREATE,WRITE,RECREATE), UPDATE)
Definition: OutputStream.h:89
Gaudi::Property< bool > m_verifyItems
Definition: OutputStream.h:77
std::vector< Gaudi::Algorithm * > m_requireAlgs
Vector of Algorithms that this stream requires.
Definition: OutputStream.h:112
DataStoreItem * m_currentItem
Keep track of the current item.
Definition: OutputStream.h:97
Gaudi::Property< std::string > m_output
Definition: OutputStream.h:53
Algorithm(const std::string &name, ISvcLocator *svcloc, const std::string &version=PACKAGE_VERSION)
Constructor.
Definition: Algorithm.cpp:48
Gaudi::Property< std::string > m_outputName
Definition: OutputStream.h:54
Gaudi::Property< ItemNames > m_optItemNames
Definition: OutputStream.h:41
IDataSelector * selectedObjects()
Return the list of selected objects.
Definition: OutputStream.h:153
SmartIF< IDataProviderSvc > m_pDataProvider
Keep reference to the data provider service.
Definition: OutputStream.h:91
Description of the DataStoreItem class.
Definition: DataStoreItem.h:17
Gaudi::Property< bool > m_doPreLoad
Definition: OutputStream.h:49
A small to stream Data I/O.
Definition: OutputStream.h:28
STL class.
virtual bool collect(IRegistry *dir, int level)
Store agent&#39;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:95
StatusCode initialize() override
Initialize OutputStream.
virtual StatusCode connectConversionSvc()
AlgDependentItems m_algDependentItems
Items to be saved for specific algorithms.
Definition: OutputStream.h:103
std::vector< DataStoreItem * > Items
Definition: OutputStream.h:30
std::vector< Gaudi::Algorithm * > m_vetoAlgs
Vector of Algorithms that this stream is vetoed by.
Definition: OutputStream.h:114
Gaudi::Property< std::vector< std::string > > m_requireNames
Definition: OutputStream.h:65
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
Items m_itemList
Vector of items to be saved to this stream.
Definition: OutputStream.h:99
void addItem(Items &itms, const std::string &descriptor)
Add item to output streamer list.
The IRegistry represents the entry door to the environment any data object residing in a transient da...
Definition: IRegistry.h:22
Gaudi::Property< AlgDependentItemNames > m_algDependentItemList
Definition: OutputStream.h:43
SmartIF< IDataManagerSvc > m_pDataManager
Keep reference to the data manager service.
Definition: OutputStream.h:93
void clearSelection()
Clear list of selected objects.
SmartIF< IIncidentSvc > m_incidentSvc
Reference to the incident service.
Definition: OutputStream.h:86
StatusCode execute() override
Working entry point.
Alias for backward compatibility.
Definition: Algorithm.h:56
Gaudi::Property< std::string > m_storeName
Definition: OutputStream.h:55
std::vector< std::string > ItemNames
Definition: OutputStream.h:31
Base class from which all concrete algorithm classes should be derived.
Definition: Algorithm.h:79
std::map< Gaudi::Algorithm *, Items > AlgDependentItems
Definition: OutputStream.h:32
Gaudi::Property< bool > m_doPreLoadOpt
Definition: OutputStream.h:51
StatusCode collectFromSubTree(DataObject *)
void decodeAlgorithms(Gaudi::Property< std::vector< std::string >> &theNames, std::vector< Gaudi::Algorithm * > &theAlgs)
Decode specified list of Algorithms.
Gaudi::Property< std::string > m_persName
Definition: OutputStream.h:57
Gaudi::Algorithm * decodeAlgorithm(const std::string &theName)
Decode a single algorithm name.
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:30
Gaudi::Property< ItemNames > m_itemNames
Definition: OutputStream.h:40
virtual StatusCode collectObjects()
Collect all objects to be written to the output stream.
The interface implemented by the IncidentSvc service.
Definition: IIncidentSvc.h:23
std::vector< Gaudi::Algorithm * > m_acceptAlgs
Vector of Algorithms that this stream accepts.
Definition: OutputStream.h:110
bool m_fireIncidents
should I fire incidents for writing opening/closing etc? in the baseclass, always fire the incidents ...
Definition: OutputStream.h:83
Items m_optItemList
Vector of optional items to be saved to this stream.
Definition: OutputStream.h:101