NTupleSvc.h
Go to the documentation of this file.
1 #ifndef GAUDI_NTUPLESVC_H
2 #define GAUDI_NTUPLESVC_H 1
3 
4 // Framework include files
5 #include "GaudiKernel/INTupleSvc.h"
6 #include "GaudiKernel/IDataSourceMgr.h"
7 #include "GaudiKernel/DataSvc.h"
8 
9 // STL include files
10 #include <map>
11 
12 
24 class NTupleSvc : public extends2<DataSvc, INTupleSvc, IDataSourceMgr>
25 {
26 private:
27 protected:
28  struct Connection final {
30  Connection(IConversionSvc* s) : service(s) {}
31  Connection(const Connection& c) : service(c.service) {}
32  };
33  typedef std::vector< std::string > DBaseEntries;
34  typedef std::map<std::string, Connection> Connections;
35  typedef std::pair<std::string,std::string> Prop;
36 
37 private:
38 public:
40  virtual StatusCode initialize();
42  virtual StatusCode reinitialize();
44  virtual StatusCode finalize();
46  virtual IConversionSvc* getDataLoader(IRegistry* pReg);
47 
49  virtual NTuple::Directory* createDirectory (DataObject* pParent, const std::string& title);
51  virtual NTuple::Directory* createDirectory (DataObject* pParent, long id);
53  virtual NTuple::Directory* createDirectory (const std::string& dirPath, long id);
55  virtual NTuple::Directory* createDirectory (const std::string& dirPath, const std::string& title);
57  virtual NTuple::Directory* createDirectory (const std::string& fullPath);
58 
60  virtual StatusCode create(const CLID& typ, const std::string& title, NTuple::Tuple*& refpTuple);
62  virtual NTuple::Tuple* book (const std::string& fullPath, const CLID& type, const std::string& title);
64  virtual NTuple::Tuple* book (const std::string& dirPath, const std::string& relPath, const CLID& type, const std::string& title);
66  virtual NTuple::Tuple* book (const std::string& dirPath, long id, const CLID& type, const std::string& title);
68  virtual NTuple::Tuple* book (DataObject* pParent, const std::string& relPath, const CLID& type, const std::string& title);
70  virtual NTuple::Tuple* book (DataObject* pParent, long id, const CLID& type, const std::string& title);
72  virtual NTuple::Tuple* access(const std::string& fullPath, const std::string& filename);
74  virtual StatusCode save(const std::string& fullPath);
76  virtual StatusCode save(NTuple::Tuple* tuple);
78  virtual StatusCode save(DataObject* pParent, const std::string& relPath);
80  virtual StatusCode writeRecord( NTuple::Tuple* tuple );
82  virtual StatusCode writeRecord( const std::string& fullPath );
84  virtual StatusCode writeRecord( DataObject* pParent, const std::string& relPath );
86  virtual StatusCode readRecord( NTuple::Tuple* tuple );
88  virtual StatusCode readRecord( const std::string& fullPath );
90  virtual StatusCode readRecord( DataObject* pParent, const std::string& relPath);
91 
93  virtual bool isConnected(const std::string& identifier) const;
95  virtual StatusCode connect(const std::string& ident);
97  virtual StatusCode connect(const std::string& ident, std::string& logname);
99  virtual StatusCode disconnect(const std::string& nam);
101  virtual StatusCode disconnectAll();
102 
104  NTupleSvc(const std::string& name, ISvcLocator* svc);
106  virtual ~NTupleSvc();
107 protected:
108 
110  StatusCode createService( const std::string& nam,
111  const std::string& typ,
112  const std::vector<Prop>& props,
113  IConversionSvc*& pSvc);
117  StatusCode attachTuple(const std::string& filename, const std::string& logname, const char typ, const long t);
120 
122  DBaseEntries m_output;
124  DBaseEntries m_input;
126  Connections m_connections;
127 };
128 
129 #endif // GAUDI_NTUPLESVC_H
std::map< std::string, Connection > Connections
Definition: NTupleSvc.h:34
void releaseConnection(Connection &c)
Finalize single service.
Definition: NTupleSvc.cpp:178
tuple c
Definition: gaudirun.py:392
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
Definition: ISvcLocator.h:25
virtual StatusCode finalize()
DataSvc overrides: stop the service.
Definition: NTupleSvc.cpp:204
virtual StatusCode save(const std::string &fullPath)
Save N tuple to disk. Must be called in order to close the ntuple file properly.
Definition: NTupleSvc.cpp:535
Connection(IConversionSvc *s)
Definition: NTupleSvc.h:30
virtual NTuple::Directory * createDirectory(DataObject *pParent, const std::string &title)
Create Ntuple directory and register it with the data store.
Definition: NTupleSvc.cpp:438
virtual StatusCode readRecord(NTuple::Tuple *tuple)
Read single record from N tuple.
Definition: NTupleSvc.cpp:615
std::vector< std::string > DBaseEntries
Definition: NTupleSvc.h:33
StatusCode updateDirectories()
Update directory data.
Definition: NTupleSvc.cpp:123
StatusCode createService(const std::string &nam, const std::string &typ, const std::vector< Prop > &props, IConversionSvc *&pSvc)
Create conversion service.
Definition: NTupleSvc.cpp:281
std::pair< std::string, std::string > Prop
Definition: NTupleSvc.h:35
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
IConversionSvc * service
Definition: NTupleSvc.h:29
virtual StatusCode reinitialize()
DataSvc overrides: reinitialize service.
Definition: NTupleSvc.cpp:101
NTupleSvc(const std::string &name, ISvcLocator *svc)
Standard Constructor.
Definition: NTupleSvc.cpp:61
The IRegistry represents the entry door to the environment any data object residing in a transient da...
Definition: IRegistry.h:22
virtual StatusCode connect(const std::string &ident)
Add file to list I/O list.
Definition: NTupleSvc.cpp:212
unsigned int CLID
Class ID definition.
Definition: ClassID.h:8
virtual NTuple::Tuple * book(const std::string &fullPath, const CLID &type, const std::string &title)
Book Ntuple and register it with the data store.
Definition: NTupleSvc.cpp:363
DBaseEntries m_input
Input streams.
Definition: NTupleSvc.h:124
Abstract base class which allows the user to interact with the actual N tuple implementation.
Definition: NTuple.h:370
virtual StatusCode writeRecord(NTuple::Tuple *tuple)
Write single record to N tuple.
Definition: NTupleSvc.cpp:573
virtual IConversionSvc * getDataLoader(IRegistry *pReg)
DataSvc overrides: Retrieve data loader.
Definition: NTupleSvc.cpp:112
NTuple service.
Definition: NTupleSvc.h:24
Base class used to extend a class implementing other interfaces.
Definition: extends.h:10
DBaseEntries m_output
Output streams.
Definition: NTupleSvc.h:122
string s
Definition: gaudirun.py:246
virtual NTuple::Tuple * access(const std::string &fullPath, const std::string &filename)
Access N tuple on disk.
Definition: NTupleSvc.cpp:529
virtual StatusCode create(const CLID &typ, const std::string &title, NTuple::Tuple *&refpTuple)
Create requested N tuple (Hide constructor)
Definition: NTupleSvc.cpp:342
virtual StatusCode initialize()
DataSvc overrides: Initialize the service.
Definition: NTupleSvc.cpp:75
StatusCode attachTuple(const std::string &filename, const std::string &logname, const char typ, const long t)
Attach output/input file.
Definition: NTupleSvc.cpp:470
virtual StatusCode disconnect(const std::string &nam)
Close open connection.
Definition: NTupleSvc.cpp:186
virtual StatusCode disconnectAll()
Close all open connections.
Definition: NTupleSvc.cpp:197
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:30
Small class representing an N tuple directory in the transient store.
Definition: NTuple.h:1068
virtual bool isConnected(const std::string &identifier) const
Check if a datasource is connected.
Definition: NTupleSvc.cpp:106
virtual ~NTupleSvc()
Standard Destructor.
Definition: NTupleSvc.cpp:71
Connection(const Connection &c)
Definition: NTupleSvc.h:31
string type
Definition: gaudirun.py:151
Connections m_connections
Container of connection points.
Definition: NTupleSvc.h:126