Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

NTupleSvc.h

Go to the documentation of this file.
00001 //====================================================================
00002 //  N tuple service definition definition
00003 //--------------------------------------------------------------------
00004 //
00005 //  Package    : Gaudi/NTupleSvc ( The LHCb Offline System)
00006 //  Author     : M.Frank
00007 //====================================================================
00008 #ifndef GAUDI_NTUPLESVC_H
00009 #define GAUDI_NTUPLESVC_H 1
00010 
00011 // Framework include files
00012 #include "GaudiKernel/INTupleSvc.h"
00013 #include "GaudiKernel/IDataSourceMgr.h"
00014 #include "GaudiKernel/DataSvc.h"
00015 
00016 // STL include files
00017 #include <map>
00018 
00019 // Forward declarations
00020 template <class TYPE> class SvcFactory;
00021 
00047 class NTupleSvc : public DataSvc,
00048                   virtual public INTupleSvc,
00049                   virtual public IDataSourceMgr
00050 {
00051 private:
00052 protected:
00053   friend class SvcFactory<NTupleSvc>;
00054   typedef std::vector< std::string >              DBaseEntries;
00055   typedef std::map<std::string, IConversionSvc*>  Connections;
00056   typedef std::pair<std::string,std::string>      Prop;
00057 
00058 private:
00059 public:
00061   virtual StatusCode initialize();
00063   virtual StatusCode finalize();
00065   virtual StatusCode queryInterface(const IID& riid, void** ppvInterface);
00067   virtual StatusCode loadObject(IDataDirectory* pDirectory);
00068 
00070   virtual NTuple::Directory* createDirectory (DataObject* pParent, const std::string& title);
00072   virtual NTuple::Directory* createDirectory (DataObject* pParent, long id);
00074   virtual NTuple::Directory* createDirectory (const std::string& dirPath, long id);
00076   virtual NTuple::Directory* createDirectory (const std::string& dirPath, const std::string& title);
00078   virtual NTuple::Directory* createDirectory (const std::string& fullPath);
00079 
00081   virtual StatusCode create(const CLID& typ, const std::string& title, NTuple::Tuple*& refpTuple);
00083   virtual NTuple::Tuple* book (const std::string& fullPath, const CLID& type, const std::string& title);
00085   virtual NTuple::Tuple* book (const std::string& dirPath, const std::string& relPath, const CLID& type, const std::string& title);
00087   virtual NTuple::Tuple* book (const std::string& dirPath, long id, const CLID& type, const std::string& title);
00089   virtual NTuple::Tuple* book (DataObject* pParent, const std::string& relPath, const CLID& type, const std::string& title);
00091   virtual NTuple::Tuple* book (DataObject* pParent, long id, const CLID& type, const std::string& title);
00093   virtual NTuple::Tuple* access(const std::string& fullPath, const std::string& filename);
00095   virtual StatusCode save(const std::string& fullPath);
00097   virtual StatusCode save(NTuple::Tuple* tuple);
00099   virtual StatusCode save(DataObject* pParent, const std::string& relPath);
00101   virtual StatusCode writeRecord( NTuple::Tuple* tuple );
00103   virtual StatusCode writeRecord( const std::string& fullPath );
00105   virtual StatusCode writeRecord( DataObject* pParent, const std::string& relPath );
00107   virtual StatusCode readRecord( NTuple::Tuple* tuple );
00109   virtual StatusCode readRecord( const std::string& fullPath );
00111   virtual StatusCode readRecord( DataObject* pParent, const std::string& relPath);
00112 
00114   virtual bool isConnected(const std::string& identifier)   const;
00116   virtual StatusCode connect(const std::string& ident);
00118   virtual StatusCode connect(const std::string& ident, std::string& logname);
00120   virtual StatusCode disconnect(const std::string& nam);
00122   virtual StatusCode disconnectAll();
00123 
00124 protected:
00126   NTupleSvc(const std::string& name, ISvcLocator* svc);
00128   virtual ~NTupleSvc();
00129 
00131   StatusCode connectToHistogramPersistency(const std::string& nam, const std::string& svtTyp, const std::vector<Prop>& props, IConversionSvc*& pSvc);
00133   StatusCode createService(const std::string& nam, const std::string& svtTyp, const std::vector<Prop>& props, IConversionSvc*& pSvc);
00135   StatusCode attachTuple(const std::string& filename, const std::string& logname, const char typ, unsigned char t);
00137   StatusCode updateDirectories();
00138 
00140   DBaseEntries                 m_output;
00142   DBaseEntries                 m_input;
00144   std::string                  m_storeName;
00146   Connections                  m_connections;
00147 };
00148 
00149 #endif // GAUDI_NTUPLESVC_H

Generated at Wed Nov 21 12:22:30 2001 by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000