| # Gaudi Framework, version v21r6 |

Home |  | Generated: 11 Nov 2009

# RConverter.h

Go to the documentation of this file.

    00001 // $Id: RConverter.h,v 1.8 2006/11/30 20:51:35 mato Exp $
    00002 #ifndef ROOTHISTCNV_RCONVERTER_H
    00003 #define ROOTHISTCNV_RCONVERTER_H 1
    00004
    00005 // Include files
    00006 #include "GaudiKernel/Converter.h"
    00007 #include "GaudiKernel/CnvFactory.h"
    00008 #include "TDirectory.h"
    00009 #include <string>
    00010 #include <map>
    00011
    00012 // Forward declarations
    00013 class ISvcLocator;
    00014 class TObject;
    00015 class TTree;
    00016 class TFile;
    00017
    00018 class GlobalDirectoryRestore  {
    00019   TDirectory* m_current;
    00020 public:
    00021   GlobalDirectoryRestore() {
    00022     m_current = gDirectory;
    00023   }
    00024   virtual ~GlobalDirectoryRestore()  {
    00025     gDirectory = m_current;
    00026   }
    00027 };
    00028
    00029 namespace RootHistCnv {
    00030
    00036   class RConverter : public Converter   {
    00037   public:
    00039     virtual StatusCode createRep(DataObject*      pObj,
    00040                                  IOpaqueAddress*& refpAddr);
    00042     static long storageType()    {         return ROOT_StorageType;    }
    00043     long repSvcType() const      {         return i_repSvcType();      }
    00044
    00045     StatusCode error(const std::string& msg);
    00046     StatusCode regTFile(const std::string, const TFile*);
    00047     StatusCode findTFile(const std::string, TFile*&);
    00048
    00049     std::string diskDirectory(const std::string& loc);
    00050     std::string directory(const std::string& loc);
    00051     void setDirectory(const std::string& loc);
    00052     void setDiskDirectory(const std::string& loc);
    00053     StatusCode createDirectory(const std::string& loc);
    00054     StatusCode createDiskDirectory(const std::string& loc);
    00055     std::string getDirectory();
    00056
    00057     std::string convertId(const std::string& ) const ;
    00058
    00059   protected:
    00061     RConverter( const CLID& clid, ISvcLocator* svc )
    00062     : Converter(storageType(), clid, svc)  {    }
    00064     virtual ~RConverter() {     }
    00066     virtual StatusCode readObject( IOpaqueAddress* pAddr,
    00067                                    DataObject*& refpObj);
    00069     virtual TObject* createPersistent(DataObject* pObj);
    00071     StatusCode createAddress( DataObject* pObject,
    00072                               TDirectory* pDir,
    00073                               TObject* pTObject,
    00074                               IOpaqueAddress*& refpAddr);
    00075
    00076     StatusCode createAddress(const std::string& rzdir,
    00077                              const CLID& clid,
    00078                              long id,
    00079                              TObject* pTobj,
    00080                              IOpaqueAddress*& refpAddress);
    00081
    00082     StatusCode createAddress(const std::string& rzdir,
    00083                              const CLID& clid,
    00084                              const std::string& title,
    00085                              TObject* pTobj,
    00086                              IOpaqueAddress*& refpAddress);
    00087
    00089     TDirectory* changeDirectory(DataObject* pObject);
    00090   };
    00091 };    // namespace RootHistCnv
    00092
    00093 #endif    // RootHistCnv_RConverter_H