| # Gaudi Framework, version v20r3
Generated: 24 Nov 2008

# NTupleSvc.h

Go to the documentation of this file.

    00001 // $Id: NTupleSvc.h,v 1.9 2006/11/30 14:57:04 mato Exp $
    00002 #ifndef GAUDI_NTUPLESVC_H
    00003 #define GAUDI_NTUPLESVC_H 1
    00004
    00005 // Framework include files
    00006 #include "GaudiKernel/INTupleSvc.h"
    00007 #include "GaudiKernel/IDataSourceMgr.h"
    00008 #include "GaudiKernel/DataSvc.h"
    00009
    00010 // STL include files
    00011 #include <map>
    00012
    00013 // Forward declarations
    00014 template <class TYPE> class SvcFactory;
    00015
    00027 class NTupleSvc : public DataSvc,
    00028                   virtual public INTupleSvc,
    00029                   virtual public IDataSourceMgr
    00030 {
    00031 private:
    00032 protected:
    00033   struct Connection  {
    00034     IConversionSvc* service;
    00035     Connection(IConversionSvc* s) : service(s) {}
    00036     Connection(const Connection& c) : service(c.service) {}
    00037   };
    00038   friend class SvcFactory<NTupleSvc>;
    00039   typedef std::vector< std::string >              DBaseEntries;
    00040   typedef std::map<std::string, Connection>       Connections;
    00041   typedef std::pair<std::string,std::string>      Prop;
    00042
    00043 private:
    00044 public:
    00046   virtual StatusCode initialize();
    00048   virtual StatusCode reinitialize();
    00050   virtual StatusCode finalize();
    00052   virtual StatusCode queryInterface(const InterfaceID& riid, void** ppvInterface);
    00054   virtual IConversionSvc* getDataLoader(IRegistry* pReg);
    00055
    00057   virtual NTuple::Directory* createDirectory (DataObject* pParent, const std::string& title);
    00059   virtual NTuple::Directory* createDirectory (DataObject* pParent, long id);
    00061   virtual NTuple::Directory* createDirectory (const std::string& dirPath, long id);
    00063   virtual NTuple::Directory* createDirectory (const std::string& dirPath, const std::string& title);
    00065   virtual NTuple::Directory* createDirectory (const std::string& fullPath);
    00066
    00068   virtual StatusCode create(const CLID& typ, const std::string& title, NTuple::Tuple*& refpTuple);
    00070   virtual NTuple::Tuple* book (const std::string& fullPath, const CLID& type, const std::string& title);
    00072   virtual NTuple::Tuple* book (const std::string& dirPath, const std::string& relPath, const CLID& type, const std::string& title);
    00074   virtual NTuple::Tuple* book (const std::string& dirPath, long id, const CLID& type, const std::string& title);
    00076   virtual NTuple::Tuple* book (DataObject* pParent, const std::string& relPath, const CLID& type, const std::string& title);
    00078   virtual NTuple::Tuple* book (DataObject* pParent, long id, const CLID& type, const std::string& title);
    00080   virtual NTuple::Tuple* access(const std::string& fullPath, const std::string& filename);
    00082   virtual StatusCode save(const std::string& fullPath);
    00084   virtual StatusCode save(NTuple::Tuple* tuple);
    00086   virtual StatusCode save(DataObject* pParent, const std::string& relPath);
    00088   virtual StatusCode writeRecord( NTuple::Tuple* tuple );
    00090   virtual StatusCode writeRecord( const std::string& fullPath );
    00092   virtual StatusCode writeRecord( DataObject* pParent, const std::string& relPath );
    00094   virtual StatusCode readRecord( NTuple::Tuple* tuple );
    00096   virtual StatusCode readRecord( const std::string& fullPath );
    00098   virtual StatusCode readRecord( DataObject* pParent, const std::string& relPath);
    00099
    00101   virtual bool isConnected(const std::string& identifier)   const;
    00103   virtual StatusCode connect(const std::string& ident);
    00105   virtual StatusCode connect(const std::string& ident, std::string& logname);
    00107   virtual StatusCode disconnect(const std::string& nam);
    00109   virtual StatusCode disconnectAll();
    00110
    00112   NTupleSvc(const std::string& name, ISvcLocator* svc);
    00114   virtual ~NTupleSvc();
    00115 protected:
    00116
    00118   StatusCode createService( const std::string& nam,
    00119                             const std::string& typ,
    00120                             const std::vector<Prop>& props,
    00121                             IConversionSvc*& pSvc);
    00123   void releaseConnection(Connection& c);
    00125   StatusCode attachTuple(const std::string& filename, const std::string& logname, const char typ, const long t);
    00127   StatusCode updateDirectories();
    00128
    00130   DBaseEntries                 m_output;
    00132   DBaseEntries                 m_input;
    00134   Connections                  m_connections;
    00135 };
    00136
    00137 #endif // GAUDI_NTUPLESVC_H