The Gaudi Framework  v30r3 (a5ef0a68)
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 #include "OutputStreamAgent.h"
10 
11 // STL include files
12 #include <memory>
13 #include <string>
14 #include <vector>
15 
16 // forward declarations
17 class IIncidentSvc;
18 class IRegistry;
19 class IConversionSvc;
20 struct IDataManagerSvc;
21 class OutputStreamAgent;
22 class DataStoreItem;
23 
29 class OutputStream : public Algorithm
30 {
31 public:
36 
37 protected:
38  Gaudi::Property<ItemNames> m_itemNames{this, "ItemList", {}, "vector of item names to be saved to this stream"};
40  this, "OptItemList", {}, "vector of optional item names to be saved to this stream"};
42  this,
43  "AlgDependentItemList",
44  {},
45  "mapping between algorithm names, and a list of items for which, if the "
46  "algorithm in question accepted the event, they should be also stored"};
47  Gaudi::Property<bool> m_doPreLoad{this, "Preload", true,
48  "flag indicating whether data pre-loading should be performed"};
49  Gaudi::Property<bool> m_doPreLoadOpt{this, "PreloadOptItems", false,
50  "flag indicating whether optional items should be preloaded"};
51  Gaudi::Property<std::string> m_output{this, "Output", {}, "name of the output file specification"};
52  Gaudi::Property<std::string> m_outputName{this, "OutputFile", {}, "name of the output file"};
53  Gaudi::Property<std::string> m_storeName{this, "EvtDataSvc", "EventDataSvc",
54  "name of the service managing the data store"};
55  Gaudi::Property<std::string> m_persName{this, "EvtConversionSvc", "EventPersistencySvc",
56  "name of the persistency service capable to write data from the store"};
58  this, "AcceptAlgs", {}, "names of Algorithms that this stream accepts"};
60  this, "RequireAlgs", {}, "names of Algorithms that this stream requires"};
62  this, "VetoAlgs", {}, "names of Algorithms that this stream is vetoed by"};
63  Gaudi::Property<bool> m_verifyItems{this, "VerifyItems", true,
64  "flag to indicate that item consistency should be checked"};
65 
69  bool m_fireIncidents = true;
70 
73 
87  Items m_itemList;
91  AlgDependentItems m_algDependentItems;
95  int m_events;
96 
103 
104 public:
106  OutputStream( const std::string& name, ISvcLocator* pSvcLocator );
108  virtual ~OutputStream() = default;
109 
110 protected:
124  Algorithm* decodeAlgorithm( const std::string& theName );
128  bool isEventAccepted() const;
132  virtual StatusCode writeObjects();
133 
135  virtual bool hasInput() const;
136 
137 public:
139  StatusCode initialize() override;
141  StatusCode finalize() override;
143  StatusCode execute() override;
144  // Connect to proper conversion service
147  virtual bool collect( IRegistry* dir, int level );
149  virtual StatusCode collectObjects();
151  void clearSelection();
152 
153 private:
155  void clearItems( Items& itms );
157  void addItem( Items& itms, const std::string& descriptor );
160 };
161 
162 #endif // GAUDISVC_PERSISTENCYSVC_OUTPUTSTREAM_H
Gaudi::Property< std::vector< std::string > > m_acceptNames
Definition: OutputStream.h:57
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:61
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:93
StatusCode finalize() override
Terminate OutputStream.
const std::string & name() const override
The identifying name of the algorithm object.
Definition: Algorithm.cpp:765
virtual ~OutputStream()=default
Standard Destructor.
int m_events
Number of events written to this output stream.
Definition: OutputStream.h:95
Implementation of property with value of concrete type.
Definition: Property.h:381
std::map< std::string, ItemNames > AlgDependentItemNames
Definition: OutputStream.h:35
std::map< Algorithm *, Items > AlgDependentItems
Definition: OutputStream.h:34
std::string m_outputType
Output type: NEW(NEW,CREATE,WRITE,RECREATE), UPDATE)
Definition: OutputStream.h:75
Gaudi::Property< bool > m_verifyItems
Definition: OutputStream.h:63
DataStoreItem * m_currentItem
Keep track of the current item.
Definition: OutputStream.h:85
Gaudi::Property< std::string > m_output
Definition: OutputStream.h:51
Gaudi::Property< std::string > m_outputName
Definition: OutputStream.h:52
Gaudi::Property< ItemNames > m_optItemNames
Definition: OutputStream.h:39
std::vector< Algorithm * > m_requireAlgs
Vector of Algorithms that this stream requires.
Definition: OutputStream.h:100
IDataSelector * selectedObjects()
Return the list of selected objects.
Definition: OutputStream.h:159
SmartIF< IDataProviderSvc > m_pDataProvider
Keep reference to the data provider service.
Definition: OutputStream.h:79
Description of the DataStoreItem class.
Definition: DataStoreItem.h:17
Gaudi::Property< bool > m_doPreLoad
Definition: OutputStream.h:47
std::unique_ptr< OutputStreamAgent > m_agent
Keep reference of agent.
Definition: OutputStream.h:77
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:98
STL class.
StatusCode decodeAlgorithms(Gaudi::Property< std::vector< std::string >> &theNames, std::vector< Algorithm * > &theAlgs)
Decode specified list of Algorithms.
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)
void requireAlgsHandler(Gaudi::Details::PropertyBase &theProp)
Handler for RequireAlgs Property.
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:83
StatusCode initialize() override
Initialize OutputStream.
virtual StatusCode connectConversionSvc()
AlgDependentItems m_algDependentItems
Items to be saved for specific algorithms.
Definition: OutputStream.h:91
std::vector< DataStoreItem * > Items
Definition: OutputStream.h:32
Gaudi::Property< std::vector< std::string > > m_requireNames
Definition: OutputStream.h:59
void vetoAlgsHandler(Gaudi::Details::PropertyBase &theProp)
Handler for VetoAlgs Property.
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:51
Items m_itemList
Vector of items to be saved to this stream.
Definition: OutputStream.h:87
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
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
Gaudi::Property< AlgDependentItemNames > m_algDependentItemList
Definition: OutputStream.h:41
SmartIF< IDataManagerSvc > m_pDataManager
Keep reference to the data manager service.
Definition: OutputStream.h:81
void clearSelection()
Clear list of selected objects.
SmartIF< IIncidentSvc > m_incidentSvc
Reference to the incident service.
Definition: OutputStream.h:72
StatusCode decodeVetoAlgs()
Decode list of Algorithms that this stream is vetoed by.
void acceptAlgsHandler(Gaudi::Details::PropertyBase &theProp)
Handler for AcceptAlgs Property.
StatusCode execute() override
Working entry point.
Base class from which all concrete algorithm classes should be derived.
Definition: Algorithm.h:78
Gaudi::Property< std::string > m_storeName
Definition: OutputStream.h:53
std::vector< std::string > ItemNames
Definition: OutputStream.h:33
Gaudi::Property< bool > m_doPreLoadOpt
Definition: OutputStream.h:49
Algorithm * decodeAlgorithm(const std::string &theName)
Decode a single algorithm name.
OutputStream(const std::string &name, ISvcLocator *pSvcLocator)
Standard algorithm Constructor.
Gaudi::Property< std::string > m_persName
Definition: OutputStream.h:55
std::vector< Algorithm * > m_vetoAlgs
Vector of Algorithms that this stream is vetoed by.
Definition: OutputStream.h:102
Gaudi::Property< ItemNames > m_itemNames
Definition: OutputStream.h:38
virtual StatusCode collectObjects()
Collect all objects to be written to the output stream.
The interface implemented by the IncidentSvc service.
Definition: IIncidentSvc.h:23
StatusCode decodeAcceptAlgs()
Decode list of Algorithms that this stream accepts.
bool m_fireIncidents
should I fire incidents for writing opening/closing etc? in the baseclass, always fire the incidents ...
Definition: OutputStream.h:69
Items m_optItemList
Vector of optional items to be saved to this stream.
Definition: OutputStream.h:89